题解 | #玛雅人的密码# 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);
    }
}

全部评论

相关推荐

菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
HNU_fsq:建议直接出国,这简历太6了。自愧不如
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务