题解-bfs | #密码锁#

密码锁

https://www.nowcoder.com/practice/7da5fb77ba2e462c909fbff8f61584be

#include <iostream>
#include <queue>
#include <unordered_map>
using namespace std;
int n;
int bfs(string st){
    queue<string> q;
    unordered_map<string, int> d;
    q.push(st);
    d[st] = 0;
    while(q.size()){
        auto t = q.front();
        q.pop();
        if(t.find("2012") != -1) return d[t];
        for(int i = 0; i < t.size() - 1; i ++){
            string r = t;
            swap(r[i], r[i + 1]);
            if(d.count(r) == 0){
                q.push(r);
                d[r] = d[t] + 1;
            }
        }
    }
    return -1;
}


int main(){
    while(cin>>n){
        string s;
        cin>>s;
        cout<<bfs(s)<<endl;
    }
    return 0;
}

全部评论
妙啊
点赞 回复 分享
发布于 02-13 19:48 山东

相关推荐

07-02 18:09
门头沟学院 Java
苍穹外卖和谷粒商城这俩是不是烂大街了,还能做吗?
想去重庆的鸽子在吐槽:你不如把这俩做完自己搞明白再优化点再来问 何必贩卖焦虑
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务