首页 > 试题广场 >

密码锁

[编程题]密码锁
  • 热度指数:4262 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
玛雅人有一种密码,如果字符串中出现连续的2012四个数字就能解开密码。给一个长度为N的字符串(2=<N<=13),该字符串中只含有0,1,2三种数字,问这个字符串要移位几次才能解开密码,每次只能移动相邻的两个数字。例如02120经过一次移位,可以得到20120,01220,02210,02102,其中20120符合要求,因此输出为1.如果无论移位多少次都解不开密码,输出-1。


输入描述:
第一行输入N,第二行输入N个数字,只包含0,1,2


输出描述:
输出字符串要移几位才能解开密码,如果无论移位多少次都解不开密码,输出-1
示例1

输入

5
02120
5
02120

输出

1
1
头像 marlin818
发表于 2024-03-12 16:17:01
#include <iostream> #include <queue> #include <unordered_map> using namespace std; int n; int bfs(string st){ queue<string> 展开全文
头像 Ice_i_Cream
发表于 2025-04-23 22:22:23
import java.util.*; import java.io.*; public class Main { public static void main(String[]args) { Scanner in = new Scanner(System.in); 展开全文
头像 SStarry
发表于 2023-09-05 17:37:24
#include <iostream> #include <queue> #include <unordered_map> #include <algorithm> using namespace std; int n; string s; str 展开全文
头像 牛客295317444号
发表于 2022-03-07 16:03:44
内存超限整了好久,生气! bfs搜索,用map记录已出现过的排列,否则内存会超限 ">#include <queue> #include <map> using namespace std; typedef struct node{//定义每一种排列的结构体 int 展开全文
头像 CserDu
发表于 2022-02-02 19:22:24
BFS广搜即可 代码: #include<iostream> #include<set> #include<queue> using namespace std; int n; //检查是否含有2012 int check(string& s){ 展开全文
头像 牛客596495425号
发表于 2025-03-20 11:54:46
#include <iostream> #include<map> #include<string> #include<set> #include<queue> using namespace std; string aim; void b 展开全文
头像 沈阳第六人
发表于 2023-02-07 12:13:43
#include<iostream> #include<vector> #include<string> #include<algorithm> #include<queue> #include<map> using names 展开全文