题解 | #玛雅人的密码# bfs + un_map

玛雅人的密码

https://www.nowcoder.com/practice/761fc1e2f03742c2aa929c19ba96dbb0

#include <iostream>
#include <unordered_map>
#include <queue>
using namespace std;

int n;
string s;

struct New_String{
    string s;
    int step;
    New_String(int i, string s): step(i), s(s) {}
};

unordered_map<string, bool> isvisit;
void bfs(string s)
{
    queue<New_String> q;
    q.push(New_String(0, s));
    isvisit[s] = true;
    while(!q.empty())
    {
        New_String tmp = q.front();
        q.pop();
        string tmp_s = tmp.s;
        if(tmp_s.find("2012") != string::npos)
        {
            cout << tmp.step << endl;
            return;
        }
        for(int i = 0; i < tmp_s.size() - 1; i++)
        {
            swap(tmp_s[i], tmp_s[i+1]);
            if(!isvisit[tmp_s])
            {
                q.push(New_String(tmp.step+1, tmp_s));
                isvisit[tmp_s] = true;
            }
            swap(tmp_s[i], tmp_s[i+1]);
        }
    }
    cout << -1 << endl;
}

int main() {
    while(cin >> n >> s)
    {
        bfs(s);
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
11-11 14:21
西京学院 C++
无敌混子大王:首先一点,不管学校层次怎么样,教育经历放在第一页靠上位置,第一页看不到教育经历,hr基本直接扔掉了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务