首页 > 试题广场 >

开锁

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

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

输入

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

输出

2
头像 o0草
发表于 2022-04-20 13:45:43
使用广度优先算法: Queue<String> queue = new LinkedList<>(); queue.offer("0000"); while(!queue.isEmpty()){ int size = 展开全文
头像 Kuris
发表于 2022-08-06 10:46:26
BFS算法 import java.util.*; public class Solution {     public int open (ArrayList<String> 展开全文
头像 牛客马MAXEY
发表于 2023-11-08 15:23:27
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param vec string字符串vector * @param tar strin 展开全文
头像 17c89
发表于 2024-04-23 14:24:32
import java.util.*; /** * NC363 开锁 * @author d3y1 */ public class Solution { private HashSet<String> isForbidden; private HashSet< 展开全文
头像 fred-coder
发表于 2022-04-23 16:15:45
bfs,将存在队列中密码的每一位进行操作,直到队列为空或达到目标值,初始时队列和记录已存在的密码集合均为 "0000" # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param vec string字符串一维数组 # @param tar str 展开全文