社区讨论

为什么本地运行RE但AC了

P1032[NOIP 2002 提高组] 字串变换(疑似错题)参与者 4已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mhjhhdct
此快照首次捕获于
2025/11/04 02:38
4 个月前
此快照最后确认于
2025/11/04 02:38
4 个月前
查看原帖
为什么这份代码在本地运行#4的数据时没有输出,但是提交上去就AC了,好奇怪?
CPP
#include <bits/stdc++.h>
using namespace std;
const int N=100;
string a,b;
string s[N],e[N];
queue<pair<string,int>> q;
map<string,bool> mp;
int n;
inline void check(int num,string str,int cnt){
    if(cnt>=10)return ;
    if(str.size()<s[num].size())return ;
    for(int i=0;i<str.size()-s[num].size()+1;i++){
        bool flag=true;
        for(int j=0;j<s[num].size();j++)
            if(s[num][j]!=str[i+j]){
                flag=false;
                break;
            }
        if(flag){
            string tmp=str.substr(0,i)+e[num]+str.substr(i+s[num].size());
            if(!mp[tmp]){q.push({tmp,cnt+1});mp[tmp]=true;}
        }
    }
}
inline int bfs(){
    q.push({a,0});
    mp[a]=true;
    while(q.size()){
        pair<string,int> k=q.front();
        q.pop();
        if(k.second>10)continue;
        if(k.first==b)return k.second;
        for(int i=1;i<=n;i++){
            // cout<<i<<endl;
            // cout<<s[i]<<" "<<e[i]<<endl;
            check(i,k.first,k.second);
            // cout<<222<<endl;
            // cout<<q.front().second<<endl;
            // cout<<n<<endl;
        }
    }
    return -1;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>a>>b;
    n=1;
    while(cin>>s[n]>>e[n])n++;
    n--;
    int ret=bfs();
    if(ret==-1)cout<<"NO ANSWER!\n";
    else cout<<ret<<"\n";
    return 0;
}
#4数据
CPP
a aaaaa
a a112233445566778899
778899 a
112233 a
445 a
566 a
55 a
请大神指导

回复

4 条回复,欢迎继续交流。

正在加载回复...