80分求助
查看原帖
80分求助
1034206
lusq楼主2023/11/4 11:08
#include<bits/stdc++.h>
using namespace std;
string st1[1005],st2[1005];
struct Node{
	string st;
	int n;
};
string re(string st1,int i,int j,string st2){
	string st="";
	for(int k=0;k<st1.size();k++){
		if(k==i){
			st+=st2;
		}else if(!(k<i+j && k>=i)){
			st+=st1[k];
		}
	}
	return st;
}
int main(){
	string a,b;
	cin>>a>>b;
	int k=0;
	while(cin>>st1[k]>>st2[k]){
		k++;
	}
	queue<Node>q;
	q.push({a,0});
	while(q.size()){
		Node p=q.front();
		q.pop();
		if(p.st==b){
			cout<<p.n;
			return 0;
		}
		if(p.n>=10){
			break;
		}
		for(int i=0;i<p.st.size();i++){
			for(int j=0;j<k;j++){
				if(p.st[i]==st1[j][0]){
					bool bo=1;
					for(int t=i;t<i+st1[j].size();t++){
						if(p.st[t]!=st1[j][t-i]){
							bo=0;
							break;
						}
					}
					if(bo){
						q.push({re(p.st,i,st1[j].size(),st2[j]),p.n+1});
					}
				}
			}
		}
	}
	cout<<"NO ANSWER!";
 	return 0;
}

最后一个点MLE

2023/11/4 11:08
加载中...