首页 > 试题广场 >

开锁

[编程题]开锁
  • 热度指数:472 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个四位密码锁,每个拨轮有十个数字,从 '0' 到 '9' 每个拨轮可以自由旋转,例如一次从 '0' 转到 '1' 或 '9'。
锁初始数字是 "0000" ,给定一组特定的字符串形式的数字和一个字符串形式的目标值,要求你在不让锁上的数字达到这组数字中的任意一个的同时达到目标值,请你输出最少旋转次数,如果不可能达到,则输出-1。

数据范围: 这一组数字的长度满足 ,给定的所有数字长度都是四位,并且保证目标值不在特定数字中
示例1

输入

["9999","9998","1000"],"1001"

输出

2
1.使用广度优先算法
2.处理当前是‘9’或‘0’的加减
2.记录已经遍历过的元素,保证不要重复选择
3.判断条件增加,遇到输入字符串和遍历到的字符串一样的时候,跳出当前循环,执行下一次循环
4.判断条件增加,找到目标值跳出循环
发表于 2022-04-20 11:58:44 回复(0)