洛谷P1032&NOIP2002 字串变换

来源:互联网 发布:黑钢和知世 编辑:程序博客网 时间:2024/06/14 11:30

IDDFS

做这个题感受到了STL的强大233

注意同一个字符串可能有多处符合变换规则,所以对于同一个变换规则,搜完一处后要继续搜


#include<iostream>#include<string>#include<cstring>using namespace std;string A,B,A1[7],B1[7];int k,n=1;bool ok=0;bool DFS(int deep){if(ok)return 1;if(A==B){ok=1;return 1;}if(deep>k)return 0;int begin=0;for(int i=1;i<n;i++){while(1){begin=A.find(A1[i],begin);if(begin!=string::npos){A.replace(begin,A1[i].size(),B1[i]);DFS(deep+1);if(ok)return 1;A.replace(begin,B1[i].size(),A1[i]);begin+=A1[i].size();}else break;}begin=0;}return 0;}void init(){cin>>A>>B;while(cin>>A1[n]>>B1[n])n++;}void solve(){for(k=1;k<=10;k++){if(DFS(1)){cout<<k;return;}}cout<<"NO ANSWER!";}int main(){ios::sync_with_stdio(false);init();solve();return 0;}


0 0
原创粉丝点击