向大佬求助
查看原帖
向大佬求助
674967
xz001楼主2023/8/31 19:49
#include<iostream>
#include<map>
#include<queue>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int main(){
	string A,B,a[15],b[15];
	int n=0;
	cin>>A>>B;
	while(cin>>a[n++]>>b[n++]);
	if(A==B){
		printf("0");
		return 0;
	}
	map<string,int>p;
	queue<string>q;
	q.push(A);
	p[A]=1;
	while(q.size()){
		string u=q.front();
		q.pop();
		for(int i=0;i<n;i++){
			string tmp1=u;
			int s=0;
			while(tmp1.find(a[i],s)!=string::npos){
				string tmp=tmp1;
				cout<<tmp<<endl;
				tmp.replace(u.find(a[i],s),a[i].size(),b[i]);
				cout<<tmp<<endl;
				if(p[tmp]) continue;
				p[tmp]=p[u]+1;
				if(tmp==B){
					printf("%d",p[tmp]);
					return 0;
				}
				s=tmp1.find(a[i],s)+1;
				
			}
		}
	}
	printf("NO ANSWER!");
	return 0;
}

代码直接卡住,求大佬帮助蒟蒻。

2023/8/31 19:49
加载中...