比赛 20201031 评测结果 AAAATAAT
题目名称 字串变换 最终得分 75
用户昵称 增强型图元文件 运行时间 2.000 s
代码语言 C++ 内存使用 0.85 MiB
提交时间 2020-10-31 10:19:07
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
string rules[22][2];
int n=1;
int step;
string cpy(string x,int l,int r){
	string ans="";
	for(int i=l;i<=r;i++){
		ans+=x[i];
	}
	return ans;
}
string replace(string x,string nt,string nt2){
	while(x.find(nt)!=string::npos){
		x.replace(x.find(nt),nt.size(),nt2);
	}
	return x;
}
bool check(int now,string a,string b){
	
	if(a==b)return true;
	if(now>=step){
		return false;
	}
	bool flag=0;
	int loc=0;string chd;
	for(int i=1;i<=n;++i){
		loc=-1;
		 while(1){
		 	loc=a.find(rules[i][0],loc+1);
		 	if(loc==-1)break;
		 	chd=a;
		 	chd.erase(loc,rules[i][0].size());
		 	chd.insert(loc,rules[i][1]);
		 	flag=flag|check(now+1,chd,b);
		 }
	}
	return flag;
}
int main(int argc, char** argv) {
	freopen("string.in","r",stdin);
	freopen("string.out","w",stdout);
	string a,b,c;
	cin>>a>>b;
	while(cin>>rules[n][0]>>rules[n][1]){
		n++;
	}
	n--;
	step=1;
	while(!check(0,a,b)&&step<=10){
		step++;
	}
	if(step>10){
		cout<<"NO ANSWER!";
	}else{
		cout<<step;
	}
	return 0;
}