调了半天都不知道问题在哪里,可否指点一下
#include<iostream>
#include<string>
#include<queue>
#include<cstdio>
using namespace std;
struct node{
string str;
int step;
}u,v;
string tmp1,tmp2;
string A,B;
string rulea[6],ruleb[6];
queue<node> Q;
int rule_num=0;
int main(){
cin>>A>>B;
while(cin>>tmp1>>tmp2){
rulea[rule_num]=tmp1,ruleb[rule_num]=tmp2;
rule_num++;
}
Q.push((node){A,0});
while(!Q.empty()){
u=Q.front();
if(u.step>10){
puts("NO ANSWER!");
return 0;
}
if(u.str==B){
printf("%d",u.step);
return 0;
}
Q.pop();
for(int i=0;i<rule_num;i++){
if((int)u.str.find(rulea[i])!=-1){
v.str=u.str;
v.str.replace(v.str.find(rulea[i]),rulea[i].length(),ruleb[i]);
v.step=u.step+1;
if(v.step<=10){
Q.push(v);
}
}
}
}
puts("NO ANSWER!");
return 0;
}