有一个需要密码才能打开的保险箱。密码是 n 位数, 密码的每一位是 k 位序列 0, 1, …, k-1 中的一个 。

你可以随意输入密码,保险箱会自动记住最后 n 位输入,如果匹配,则能够打开保险箱。

举个例子,假设密码是 “345”,你可以输入 “012345” 来打开它,只是你输入了 6 个字符.

请返回一个能打开保险箱的最短字符串。

示例1:

输入: n = 1, k = 2
输出: “01”
说明: "10"也可以打开保险箱。

示例2:

输入: n = 2, k = 2
输出: “00110”
说明: “01100”, “10011”, “11001” 也能打开保险箱。

提示:

n 的范围是 [1, 4]。
k 的范围是 [1, 10]。
k^n 最大可能为 4096。

思路:
图自OI-WIKI

因为这样构造的图每个点的入度等于出度,所以这是一个有向欧拉图,可以直接递归标记边(也就是Hierholzer算法)来求欧拉回路。

不过最终得到的路径和遍历的顺序是反着的(先递归再压栈)。而遍历第一条边000…的时候,只算了一个0,所以最终结果还要加上 n − 1 n-1 n−1个0。

class Solution {private:unordered_map<int,int>mp;string ans;int mod;
public:void dfs(int k,int now) {for(int x = 0;x < k;x++) {int nex = now * 10 + x;if(!mp.count(nex)) {mp[nex] = 1;dfs(k,nex % mod);ans += (x + '0');}}}string crackSafe(int n, int k) {mod = pow(10,n - 1);dfs(k,0);ans += string(n - 1,'0');return ans;}
};

LeetCode 753. 破解保险箱(有向欧拉图,计算机译码)相关推荐

  1. Leetcode 753. 破解保险箱 C++

    Leetcode 753. 破解保险箱 题目 有一个需要密码才能打开的保险箱.密码是 n 位数, 密码的每一位是 k 位序列 0, 1, -, k-1 中的一个 . 你可以随意输入密码,保险箱会自动记 ...

  2. Java实现 LeetCode 753 破解保险箱(递归)

    753. 破解保险箱 有一个需要密码才能打开的保险箱.密码是 n 位数, 密码的每一位是 k 位序列 0, 1, -, k-1 中的一个 . 你可以随意输入密码,保险箱会自动记住最后 n 位输入,如果 ...

  3. 【753. 破解保险箱】

    来源:力扣(LeetCode) 描述: 有一个需要密码才能打开的保险箱.密码是 n 位数, 密码的每一位是 k 位序列 0, 1, ..., k-1 中的一个 . 你可以随意输入密码,保险箱会自动记住 ...

  4. 753. 破解保险箱

    有一个需要密码才能打开的保险箱.密码是 n 位数, 密码的每一位是 k 位序列 0, 1, ..., k-1 中的一个 . 你可以随意输入密码,保险箱会自动记住最后 n 位输入,如果匹配,则能够打开保 ...

  5. LeetCode-753. 破解保险箱

    题目链接:753. 破解保险箱 很日常,没看题解之前依然没有发现这是道图论的题目(每日一题从官方题解开始=.=).第一次在OJ练习上做到图论的题,之前做图论的题都是辛辛苦苦写了好多结构体然后按点按边做 ...

  6. leetcode-753: 破解保险箱

    leetcode-753: 破解保险箱 题目 解题 方法一:Hierholzer 算法 题目 题目链接 有一个需要密码才能打开的保险箱.密码是 n 位数, 密码的每一位是 k 位序列 0, 1, -, ...

  7. 自制机器人15分钟破解保险箱密码

    去年圣诞节,内森·赛德的妻子给了他一个从Graigslist上淘来的二手保险箱.乍一看,好像是个奇怪的礼物.这对夫妻已经有了同型号的SentrySafe防火保险箱,从家得宝花120美元买的.但这个,有 ...

  8. 我是如何使用自制机器人在15分钟内破解保险箱密码的?

    本文讲的是 我是如何使用自制机器人在15分钟内破解保险箱密码的?, 亮相Def Con大会 热辣的7月,安全圈有两场最为火爆的顶级信息会议在美国拉斯维加斯拉开帷幕,它们分别是美国黑帽大会BlackHa ...

  9. JAVA程序设计:破解保险箱(LeetCode:753)

    有一个需要密码才能打开的保险箱.密码是 n 位数, 密码的每一位是 k 位序列 0, 1, ..., k-1 中的一个 . 你可以随意输入密码,保险箱会自动记住最后 n 位输入,如果匹配,则能够打开保 ...

最新文章

  1. 目标还是中国人,纽约智慧城市项目想通过EB-5募资10亿
  2. 2021吉林市高考成绩查询系统,吉林省教育考试院高考成绩查询系统入口2021
  3. Vue——[Props with type Object/Array must use a factory function to return the default value.]解决方案
  4. Linux 常见命令之Find \; +结合其它命令使用案例详解
  5. Qt之QSpacerItem
  6. 分享Web应用运行的细节问题:预编译提高网站性能、跟踪用户习惯和解决线程同步...
  7. Spring4Shell的漏洞原理分析
  8. Envi 4.7 破解安装及下载(转)
  9. c++获取图像的长宽 opencv_【第一篇:C++与opencv】图片的读取和显示 | 学步园
  10. STL(七)——队列queue优先队列priority_queue
  11. bzoj1568 [JSOI2008]Blue Mary开公司 标记永久化线段树
  12. JQuery学习记录——jQuery对象和DOM对象的转换
  13. 数据结构的小知识点(初学者使用)“朝闻道”知识分享大赛
  14. 每天一个php函数之:strtolower() 函数
  15. BUUCTF中的reverse1
  16. Mooc视频字幕提取
  17. 模板字符串`${}` 各种函数中的this指向?
  18. 把JavaScript单独写成文件,开头怎么写
  19. Liferay使用管理中的一些常见问题
  20. 2021-2022 ACM-ICPC Latin American Regional Programming Contest 题解

热门文章

  1. r7 2700X装Linux,R7 3700X相比R7 2700X性能差距大吗?R7-3700X和2700X区别对比评测(2)
  2. PPPoE拨号l流程
  3. 3D虚拟化技术透析及竞争分析
  4. DIY移动的智能助手-------将小爱音箱搬到爱车上
  5. 一文详解DeepID-Net
  6. 英语学渣如何成功逆袭?聊聊我获得海外工作的真实经历
  7. 云BI,如何成为了企业的“贴身管家”?
  8. 深度解析:特斯拉「最强」自动驾驶芯片?
  9. html加百度链接地址,如何给百度影音地址添加超链接网址
  10. 开水果店经验之最全的新手开店学习资料,经营一家水果店需要掌握学习什么