小学生求助,最后一个点WA了
查看原帖
小学生求助,最后一个点WA了
301766
E_D_ZY楼主2020/5/30 12:46
#include<bits/stdc++.h>
using namespace std;
map<string,bool>used; //判重 
struct check //变换规则 
{
	string s1,s2;
}g[10];
int tail;
struct point //队列 
{
	string str;
	int step;
}q[100001];
int main()
{
	string a,b;
	cin>>a>>b; //原始串-目标串 
	string _1,_2;
	while(cin>>_1>>_2) //规则
		++tail,g[tail].s1=_1,g[tail].s2=_2;
	int l=1,r=1;
	q[1].str=a,q[1].step=0;
	used[a]=true;
	while(l<=r) //BFS 
	{
		point u=q[l++];
		for(int i=1;i<=tail;i++)
		{
			point v=u;
			v.step++;
			int it=v.str.find(g[i].s1);
			if(it==string::npos)continue;
			v.str.replace(it,g[i].s1.size(),g[i].s2);
			if(used[v.str])continue;
			if(v.step>10)continue;
			q[++r]=v;
			if(v.str==b)
			{
				cout<<v.step<<'\n';
				return 0;
			}
		}
	}
	puts("NO ANSWER!\n");
}

码风丑陋,勿喷谢谢

2020/5/30 12:46
加载中...