广搜80pts 最后一个点WA 求助
查看原帖
广搜80pts 最后一个点WA 求助
752792
int__main楼主2023/8/26 13:13

调了半天都不知道问题在哪里,可否指点一下

#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;
}
2023/8/26 13:13
加载中...