最后一个点MLE了,求助
查看原帖
最后一个点MLE了,求助
727348
Dreamcatching楼主2022/10/10 21:00

最后一个点MLE了,求助

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
string a,b;
int t=1;
struct node{
    string x,y;
}o[8];
struct nod{
    string u;
    int cs;
};
bool check(string x,string y){
    int len_x=x.size(),len_y=y.size();
    if(len_x!=len_y) return false;
    for(int i=0;i<len_x;i++){
        if(x[i]!=y[i]) return false;
    }
    return true;
}
queue<nod>q;
nod x;
string u;
int cs;
int main(){
    cin>>a>>b;
    while(cin>>o[t].x>>o[t].y){t++;}
    q.push((nod){a,0});
    while(!q.empty()){
        x=q.front();
        q.pop();
        u=x.u,cs=x.cs;
        string v;
        if(cs>10){printf("NO ANSWER!");break;}
        if(check(u,b)){printf("%d",cs);break;}
        for(int i=1;i<=t;i++){
            v=u;
            int len=o[i].x.size();
            int p;
            p=v.find(o[i].x,0);
            if(p==-1) continue;
            v.replace(p,len,o[i].y);
            q.push((nod){v,cs+1});
        }
    }
    return 0;
}
2022/10/10 21:00
加载中...