大佬求助,WA在第五个点
查看原帖
大佬求助,WA在第五个点
1233382
cpp_xhq楼主2025/2/8 10:32
#include<bits/stdc++.h>
using namespace std;
string s,t,a,b;
pair<string,string> c[10];
map<string,bool> vis;
map<string,int> mp;
int n=0,k=2;
int ans=(int)1e9+7;

string ch(string s,pair<string,string> c)
{
	string a=c.first,b=c.second;
	string ans="";
	int w=s.find(a);
	if(w>=s.size())
	{
		return "-1"; 
	}else
	{
		ans+=s.substr(0,w);
		ans+=b;
		ans+=s.substr(w+a.size(),s.size());
		return ans;
	}
}


void dfs(int stp,string now)
{
	if(stp>k) return ;
	if(now==t) 
	{
		ans=min(stp,ans);
		return ;
	}
	if(vis[now])
	{
		if(stp>=mp[now]) return ;
	}
	vis[now]=1; mp[now]=stp;
	for(int i=1;i<=n;i++)
	{
		string x=ch(now,c[i]);
		if(x=="-1") continue;
		dfs(stp+1,x);
	}
}


int main()
{
	cin>>s>>t;
	while(cin>>a>>b)
	{
		c[++n]={a,b};
	}
	while(ans==(int)1e9+7)
	{
		dfs(0,s);
		vis.clear();
		mp.clear();
		k++;
		if(k==11) break;
	}
	if(ans==(int)1e9+7)
	{
		cout<<"NO ANSWER!";
		return 0;
	}
	cout<<ans<<endl;
	return 0;
} 
2025/2/8 10:32
加载中...