牛客 玛雅人的密码
2024-01-07 20:55:08
宽搜/字符串变换板子
题
#include<bits/stdc++.h>
using namespace std;
struct Node{
string s;
int st;
Node(string ss, int x):s(ss), st(x){};
};
int n;
unordered_map<string, int>vis; //避免重复字符串入队
void bfs(string ss){ //宽搜没有递归调用这一过程
queue<Node>q;
q.push(Node(ss, 0));
vis[ss] = 1; //记录该字符串已经搜索过
while(q.size()){
Node t = q.front();
string sw = t.s;
q.pop();
vis[sw] = true;
if(sw.find("2012") != string::npos){
cout<<t.st<<endl;
return ;
}
for(int i = 0; i < sw.length() - 1; i ++ ){
swap(sw[i], sw[i + 1]);
if(!vis[sw]){
q.push(Node(sw, t.st + 1));
vis[sw] = true;
}
swap(sw[i], sw[i + 1]);
}
}
cout<<-1<<endl;
}
int main()
{
string str;
while(cin>>n>>str){
bfs(str);
}
return 0;
}
文章来源:https://blog.csdn.net/qiaodxs/article/details/135444002
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!