题解 | #玛雅人的密码#

玛雅人的密码

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

全部评论

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务