想要控制在 64 MB 以内,但保留 string STL
#include <bits/stdc++.h>
using namespace std;
class Change
{
public:
string g;
int step;
};
string rA[7],rB[7],A,B;
queue<Change> r;
int n(1),ans;
void bfs(Change u)
{
r.push(u);
Change v;
int p,i;
while(!r.empty())
{
u=r.front(),r.pop();
if (u.step>10) break;
for(i=1;i<=n;i++)
{
p=u.g.find(rA[i],0);
while(p!=-1)
{
v.g=u.g;
v.g.replace(p,(int)rA[i].size(),rB[i]);
v.step=u.step+1;
if (v.g==B)
{
ans=v.step;
return;
}
r.push(v);
p=u.g.find(rA[i],p+1);
}
}
}
ans=-1;
return;
}
int main()
{
//字串变换
cin>>A>>B;
while(cin>>rA[n]>>rB[n]) n++;n--;
bfs((Change){A,0});
if (ans==-1) printf("NO ANSWER!");
else printf("%d",ans);
}