minimal sparse ruler problem 最少尺子刻度问题
一个长度13的尺子,如果在1位置刻点可以量出1和12,13三种刻度.那么至少刻几个点,可以直接量出1-13所有的长度,分别刻在哪几个位置?
注:必须是直接量。即在尺子上能找出一个1-13任意的整数长度。
写了个没什么技术含量的dfs暴力求解。一个可行解是 1, 2, 6, 10。
1 #include <iostream> 2 #include <vector> 3 #include <unordered_map> 4 using namespace std; 5 6 class Solution { 7 public: 8 vector<vector<int>> ruler(int n, vector<int> &minPath) { 9 dfs(0, n, minPath); 10 return result; 11 } 12 vector<vector<int>> result; 13 vector<int> path; 14 void dfs(int start, int n, vector<int> &minPath) { 15 if (start == n + 1) { 16 if (fullScale(path)) { 17 result.push_back(path); 18 if (path.size() < minLen) { 19 minLen = path.size(); 20 minPath = path; 21 } 22 } 23 return; 24 } 25 for (int i = start; i <= n; i++) { 26 path.push_back(i); 27 dfs(i + 1, n, minPath); 28 path.pop_back(); 29 } 30 } 31 bool fullScale(vector<int> path) { 32 if (path.size() < 4) { 33 return false; 34 } 35 unordered_map<int, int> umap; 36 umap[13]++; 37 umap[0]++; 38 for (int i = 0; i < path.size(); i++) { 39 for (int j = 0; j < i; j++) { 40 if (path[i] - path[j] < 13) { 41 umap[path[i] - path[j]]++; 42 umap[path[j]]++; 43 umap[path[i]]++; 44 umap[13 - path[i]]++; 45 umap[13 - path[j]]++; 46 } 47 if (umap.size() >= 14) { 48 return true; 49 } 50 } 51 } 52 return false; 53 } 54 private: 55 int minLen = 13; 56 }; 57 58 int main() { 59 int n = 13; 60 Solution solu; 61 vector<int> minPath; 62 vector<vector<int>> res = solu.ruler(n, minPath); 63 for (auto x : minPath) { 64 cout << x << ", "; 65 } 66 }
ref: https://en.wikipedia.org/wiki/Sparse_ruler
转载于:https://www.cnblogs.com/forcheryl/p/4584615.html
minimal sparse ruler problem 最少尺子刻度问题相关推荐
- 【算法题目】递归题目(一)打印尺子刻度
1.打印尺子刻度 输入类似于 -----0 - – - - – - ---- - – - - - – - -----1 -- 间隔中数目最高的"-",要比刻度上的"-&q ...
- android自定义尺子收集demo
demo合集: https://github.com/dalong982242260/AndroidRuler 1.直尺(测量距离) github:https://github.com/1149863 ...
- 尺子英语怎么读计算机英语怎么读,尺子的英文是什么用英语怎么说
尺子又称尺.间尺,是我们用来画线段.量度长度的常用工具.你知道尺子用英文怎么吗?下面学习啦小编为大家带来尺子的英文说法,欢迎大家学习. 尺子的英文说法1 ruler 英 [ˈru:lə] 美 [ˈru ...
- 微信小程序尺子样式滚动选择器组件
先上效果图: 背景色可以自定义,大概样式就是这样. 上组件代码: Component({/*** 组件的属性列表*/properties: {icon_path: {type: String,valu ...
- 最精密的尺子,平面激光干涉仪的原理与应用
平面激光干涉仪 平面激光干涉仪--最精密的尺子 各行各业都离不开尺子,按照尺子的种类,分为卷尺.卡尺.机械尺,还有王濛的"我的眼睛就是尺!!!".激光的出现在世界计量史上具有重大的 ...
- 论文阅读笔记(8):Structured Sparse Subspace Clustering: A Joint Affinity Learning and Subspace Clustering
论文阅读笔记(8):Structured Sparse Subspace Clustering: A Joint Affinity Learning and Subspace Clustering F ...
- Android UI-薄荷健康尺子
效果 源码:HenCoder-CustomView: HenCoder-三篇自定义View仿写 (gitee.com) 原的 仿的 功能点分析 根据尺子的量程 和 分度值 绘制尺子的静态效果 内容滑动 ...
- 【论文分享】Fuzzing: A Survey for Roadmap
文章目录 1. Introduction 2. Overview 3. Fuzzing Theory 3.1 Seed Set Selection 3.2 Seed Schedule 3.3 Byte ...
- Kotlin 自定义View之实现标尺控件(选择身高、体重等)
本篇文章讲的是Kotlin 自定义view之实现标尺控件Ruler,以选择身高.体重等.开发中,当我们需要获取用户的身高和体重等信息时,如果直接让他们输入,显然体验不够好.像类似于唯品会.好轻等APP ...
最新文章
- 跨平台图表控件TeeChart使用教程:导入XML数据
- java jdk 检测安装_JDK如何安装和配置环境变量以及检验是否成功安装JDK的方法
- C# 委托(Delegate) 事件(Event)应用详解
- 《HTML5与CSS3实战指南》——2.2 基本的HTML5模板
- 【视频】视频文件格式和视频编码
- 四面八方的意思是什么,怎么用四面八方造句?
- VB SendKeys 语句
- 基于DEAP库的python进化算法-4.遗传算法求解TSP问题
- Autocompletetextview width fill parent问题
- 2021年高压电工免费试题及高压电工复审模拟考试
- 数据库课设 - 机票预订系统
- 闪耀在 UNIX 传奇往事中的启示, UNXI 见证者带你一览究竟
- 数据挖掘技术-主键合并数据准备数据
- RSRP RSRQ RSSI SNR的定义
- FPGA 视频处理中外部SDRAM的作用
- 计算机二级能加综合测评,2016综合测评加分细则.doc
- 互联网时代结束了吗?
- Window下python安装metis
- 用QRCode生成带有中间logo图的二维码
- 论文笔记010:[CVPR2019]VERI-Wild: A Large Dataset and a New Method for Vehicle Re-Identification in the W
热门文章
- Arduino 的串口通信seria.print() serial.write()
- 基于SVM算法的车辆识别与评估
- 【181007】VC++黑白棋游戏完整版游戏源码
- 软件人员kpi制定模板_数据化时代的 KPI 模板
- vue边缘不规则照片墙/图片墙(附开场动画)
- 取代微信?RocketChat开源聊天应用搭建教程
- python中turtle画小草_小草水[Python ]学习——参数的函数基础,穗,关于,篇
- 使用PaddleX实现车辆检测模型训练到服务化部署落地全流程
- Mac下两款免费的图形编辑软件
- 信捷PLC程序插键槽机全套程序方案,用信捷plc触摸屏伺服驱动,绝对值伺服电机。 实现对两轴伺服进行插键槽控制,对刀快捷,调试简单