整活代码求调
查看原帖
整活代码求调
1053122
shy_lihui楼主2024/10/31 01:03

为了写题解有新意于是写了个BFS暴搜求优化

#include<bits/stdc++.h>
using namespace std;
string s;
map<string,bool> vis;//标记之前是否出现过。
queue<string> q;
int main()
{
	ios::sync_with_stdio();
	cin.tie(0);
	cin>>s;
	q.push(s);
	vis[s]=1;//标记已走 
	while(!q.empty())
	{
		string x=q.front();
		q.pop();
		//开始构造新字符串 
		for(int i=0;i<3-1;i++)
		{
			for(int j=i+1;j<3;j++)//(i,j)和(j,i)是重复的。 
			{
				if(i==j)
				{
					continue;//如果不变化肯定无意义,直接结束即可。 
				}
				string t=x;
				swap(t[i],t[j]);//交换 
				if(t=="ABC")//找到啦。 
				{
					cout<<"Yes";
					return 0;
				}
				else if(vis[t]!=1)
				{
					q.push(t);
					vis[t]=0;
				}
			}
		}
	}
	cout<<"No";//搜完了肯定就没了。 
	return 0;
}
2024/10/31 01:03
加载中...