dfs求助玄关
查看原帖
dfs求助玄关
1053122
liruizhou_lihui楼主2024/9/18 17:21
#include<bits/stdc++.h>
#define int long long
using namespace std;
string a,b;
string aa[10],bb[10];
int l=1;
queue<string> q;
map<string,int> ans,vis;
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>a>>b;
	while(cin>>aa[l]>>bb[l])
	{
		l++;
	}
	l--;
	cin>>l;
	ans[b]=-1;
	q.push(a);
	while(!q.empty())
	{
		string now=q.front();
		q.pop();
		if(ans[now]>10)
		{
			continue;
		}
		for(int i=1;i<=l;i++)
		{
			for(int j=0;j+aa[i].size()<now.size();j++)
			{
				bool f=1;
				for(int k=0;k<aa[i].size();k++)
				{
					if(aa[i][k]!=now[j+k])
					{
						f=0;
						break;
					}
				}
				if(!f)
				{
					continue;
				}
				string next="";
				for(int k=0;k<j;k++)
				{
					next+=now[i];
				}
				next+=b[i];
				for(int k=j+aa[i].size();k<now.size();k++)
				{
					next+=now[i];
				}
				if(vis[next]!=1)
				{
					vis[next]=1;
					ans[next]=ans[now]+1;
					q.push(next);
				}
			}
		}
	}
	if(ans[b]==-1)
	{
		cout<<"NO ANSWER!";
	}
	else
	{
		cout<<ans[b];
	}
	return 0;
}



2024/9/18 17:21
加载中...