一个长度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. 【算法题目】递归题目(一)打印尺子刻度

    1.打印尺子刻度 输入类似于 -----0 - – - - – - ---- - – - - - – - -----1 -- 间隔中数目最高的"-",要比刻度上的"-&q ...

  2. android自定义尺子收集demo

    demo合集: https://github.com/dalong982242260/AndroidRuler 1.直尺(测量距离) github:https://github.com/1149863 ...

  3. 尺子英语怎么读计算机英语怎么读,尺子的英文是什么用英语怎么说

    尺子又称尺.间尺,是我们用来画线段.量度长度的常用工具.你知道尺子用英文怎么吗?下面学习啦小编为大家带来尺子的英文说法,欢迎大家学习. 尺子的英文说法1 ruler 英 [ˈru:lə] 美 [ˈru ...

  4. 微信小程序尺子样式滚动选择器组件

    先上效果图: 背景色可以自定义,大概样式就是这样. 上组件代码: Component({/*** 组件的属性列表*/properties: {icon_path: {type: String,valu ...

  5. 最精密的尺子,平面激光干涉仪的原理与应用

    平面激光干涉仪 平面激光干涉仪--最精密的尺子 各行各业都离不开尺子,按照尺子的种类,分为卷尺.卡尺.机械尺,还有王濛的"我的眼睛就是尺!!!".激光的出现在世界计量史上具有重大的 ...

  6. 论文阅读笔记(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 ...

  7. Android UI-薄荷健康尺子

    效果 源码:HenCoder-CustomView: HenCoder-三篇自定义View仿写 (gitee.com) 原的 仿的 功能点分析 根据尺子的量程 和 分度值 绘制尺子的静态效果 内容滑动 ...

  8. 【论文分享】Fuzzing: A Survey for Roadmap

    文章目录 1. Introduction 2. Overview 3. Fuzzing Theory 3.1 Seed Set Selection 3.2 Seed Schedule 3.3 Byte ...

  9. Kotlin 自定义View之实现标尺控件(选择身高、体重等)

    本篇文章讲的是Kotlin 自定义view之实现标尺控件Ruler,以选择身高.体重等.开发中,当我们需要获取用户的身高和体重等信息时,如果直接让他们输入,显然体验不够好.像类似于唯品会.好轻等APP ...

最新文章

  1. 跨平台图表控件TeeChart使用教程:导入XML数据
  2. java jdk 检测安装_JDK如何安装和配置环境变量以及检验是否成功安装JDK的方法
  3. C# 委托(Delegate) 事件(Event)应用详解
  4. 《HTML5与CSS3实战指南》——2.2 基本的HTML5模板
  5. 【视频】视频文件格式和视频编码
  6. 四面八方的意思是什么,怎么用四面八方造句?
  7. VB SendKeys 语句
  8. 基于DEAP库的python进化算法-4.遗传算法求解TSP问题
  9. Autocompletetextview width fill parent问题
  10. 2021年高压电工免费试题及高压电工复审模拟考试
  11. 数据库课设 - 机票预订系统
  12. 闪耀在 UNIX 传奇往事中的启示, UNXI 见证者带你一览究竟
  13. 数据挖掘技术-主键合并数据准备数据
  14. RSRP RSRQ RSSI SNR的定义
  15. FPGA 视频处理中外部SDRAM的作用
  16. 计算机二级能加综合测评,2016综合测评加分细则.doc
  17. 互联网时代结束了吗?
  18. Window下python安装metis
  19. 用QRCode生成带有中间logo图的二维码
  20. 论文笔记010:[CVPR2019]VERI-Wild: A Large Dataset and a New Method for Vehicle Re-Identification in the W

热门文章

  1. Arduino 的串口通信seria.print() serial.write()
  2. 基于SVM算法的车辆识别与评估
  3. 【181007】VC++黑白棋游戏完整版游戏源码
  4. 软件人员kpi制定模板_数据化时代的 KPI 模板
  5. vue边缘不规则照片墙/图片墙(附开场动画)
  6. 取代微信?RocketChat开源聊天应用搭建教程
  7. python中turtle画小草_小草水[Python ]学习——参数的函数基础,穗,关于,篇
  8. 使用PaddleX实现车辆检测模型训练到服务化部署落地全流程
  9. Mac下两款免费的图形编辑软件
  10. 信捷PLC程序插键槽机全套程序方案,用信捷plc触摸屏伺服驱动,绝对值伺服电机。 实现对两轴伺服进行插键槽控制,对刀快捷,调试简单