题解-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;
}

全部评论

相关推荐

牛客339922477号:都不用reverse,直接-1。一行。啥送分题
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务