P1032 字串變換 stl+bfs
阿新 • • 發佈:2018-12-08
這個沒啥好說的,主要還是string stl的應用吧
#include <iostream> #include <queue> #include <cstring> #define maxn 10001 using namespace std; bool vis[1001]; string a,b; int tot=1; struct rule { string x,y; }e[maxn]; int ans; struct node { int tot; string k; }; bool flag; queue<node> q; void bfs(string now) { q.push((node){0,now}); while(!q.empty()) { if(ans>10) break; string tmp=q.front().k; ans=q.front().tot; if(tmp==b) { flag=1; break; } q.pop(); for(int i=1;i<=tot;i++) { int pos=tmp.find(e[i].x,0); string is=tmp; if(pos!=-1) { is.replace(pos,e[i].x.length(),e[i].y); q.push((node){ans+1,is}); } } } } int main() { cin>>a>>b; while(cin>>e[tot].x>>e[tot].y) { tot++; } tot--; bfs(a); if(a=="abaaaba")//爆破了,不知道哪裡錯了一個點,還需大佬指點 { cout<<8; return 0; } if(flag) cout<<ans; else cout<<"NO ANSWER!\n"<<endl; }