题解 | #玛雅人的密码#

玛雅人的密码

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:项目完成时间要写一个大概的区间,自己顺延一下就行。感觉ai对话的放第一个比较好。可以自己编一些场景或者找ai编一个场景。就是你为什么要写这个仿DeepSeek对话应用。比如你自己有很多文档,这个ai可以基于你自己的文档回答之类的。个人建议~具体看你自己。 还有项目中用到那些更好让ai coding的方法也可以写一下,毕竟现在ai大跃进…
简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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