题解 | #玛雅人的密码#

玛雅人的密码

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

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

string Swap(string str,int i)
{
	swap(str[i],str[i + 1]);
	return str;
}

int main(void)
{
	int len;
	string str;
	cin >> len >> str;
	int ans = -1;
	if(str.find("2012") != -1){
		ans = 0;
		cout << ans << endl;
		return 0;
	}
	
	//进行BFS
	queue<string>q;
	unordered_map<string,int>mp;
	q.push(str);
	mp[str] = 0;
	while(!q.empty())
	{
		bool f = false;
		string tmp = q.front();
		q.pop();
		for(int i = 0;i < len - 1;i++)
		{
			string newS = Swap(tmp,i);
			if(newS.find("2012") != -1) {
				ans = mp[tmp] + 1;
				f = true;
				break;
			}
			if(mp.count(newS) == 0){
				mp[newS] = mp[tmp] + 1;
				q.push(newS);
			}
		}
		if(f)break;
	}
	cout << ans << endl;
	return 0;
}

全部评论

相关推荐

smile丶snow:空间可以优化下,基本都是一张a4纸的pdf。第二个项目感觉缺一个背景。就是你为什么要写这个东西。因为网站xx性能问题所以写了这个可以编一个。可以只要自我评价的内容,专业技能的感觉可以删掉。然后技能证书也可以去掉。在自我评价加一个英语能力就行了。个人建议哈
简历被挂麻了,求建议
点赞 评论 收藏
分享
03-31 21:47
东南大学 C++
彭于晏前来求offe...:吓晕了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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