比赛 |
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;
}