深搜,最后一个WA,求调

P1032 [NOIP2002 提高组] 字串变换

同错
by liwenxi114514 @ 2022-11-21 20:17:42


```cpp #include<bits/stdc++.h> using namespace std; string A,B,a[7],b[7]; int sum=1,ans=INT_MAX; void dfs(string now,int step){ if(step>10){ return; } if(now==B){ ans=min(ans,step); return; } for(int i=1;i<=n;i++){ int prev=now.find(a[i]); if(prev!=-1){ string tmp=now; tmp.replace(prev,a[i].size(),b[i]); dfs(tmp,step+1); } } } int main(){ cin>>A>>B; while(cin>>a[sum]>>b[sum]){ sum++; } sum--; dfs(A,0); if(ans>10){ cout<<"NO ANSWER!"; }else{ cout<<ans; } return 0; } ```
by liwenxi114514 @ 2022-11-21 20:18:07


@[_rainbow_](/user/582049) ```cpp for(int i=1;i<=n;i++){ int prev=now.find(a[i]); if(prev!=-1){ string tmp=now; tmp.replace(prev,a[i].size(),b[i]); dfs(tmp,step+1); } } ``` 这里你只是把第一个可以替换的字符串替换掉了,如果后面还有可以替换的字符串你就没有去递归下去了
by liwenxi114514 @ 2023-01-03 16:29:20


谢谢
by _rainbow_ @ 2023-01-04 16:58:08


|