题目1581:蓝桥杯算法提高VIP-密码锁
#include<iostream>
#include<queue>
#include<algorithm>
#include<map>
using namespace std;
int main(){
int n;
cin>>n;
string s;
cin>>s;
queue<string>q;//存储字符串
queue<int>steps;//存储步数
map<string,int>visited;//标记是否出现过
q.push(s);
steps.push(0);
visited[s]=1;//原始字符串已经被访问过
while(!q.empty()){
string now=q.front();
q.pop();
int step=steps.front();
steps.pop();
if(now.find("2012")!=-1){
cout<<step<<endl;
return 0;
}
for(int i=0;i<now.length();i++){
string next=now;
swap(next[i],next[i+1]);
if(visited[next]==0){
visited[next]=1;
q.push(next);
steps.push(step+1);
}
}
}
cout<<-1<<endl;
return 0;
}
更多推荐


所有评论(0)