求助,样例输出错误:1
查看原帖
求助,样例输出错误:1
421781
liuzimingc楼主2021/1/26 21:04

rt。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<queue>
#include<map>
using namespace std;
#define maxn 10
#define MAXN 30
#define ll long long
string A,B,x[maxn],y[maxn];
struct node{
    string s;
    int foot;
}a[MAXN];
queue<node> Q;
map<string,int> vis;
int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>A>>B;
    int n=0,ans=0;
    while (cin>>x[n]>>y[n]) n++;
    Q.push((node){A,0});
    node u;
    while (!Q.empty()){
        u=Q.front();
        string us=u.s;
        int ufoot=u.foot;
        Q.pop();
        if (us==B){
            ans=ufoot;
            break;
        }
        for (int i=0;i<n;i++)
            if (int(us.find(x[i]))!=-1 && vis[us]==0){
                //下面的作用就是把us的x[i]的部分替换成y[i];
                int k=int(us.find(x[i]));
                us.erase(k,k+x[i].length());
                us.insert(k,y[i]);
                Q.push((node){us,ufoot+1});
                vis[us]=1;
            }
    }
    if (ans>10 || ans==0) cout<<"NO ANSWER!"<<endl;
    else cout<<ans<<endl;
    return 0;
}

就完全懵了,因为在中间调试的时候,ufootufoot 的值一开始是 00,后来全部是 11……

2021/1/26 21:04
加载中...