社区讨论
为什么本地运行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数据
CPPa aaaaa
a a112233445566778899
778899 a
112233 a
445 a
566 a
55 a
请大神指导
回复
共 4 条回复,欢迎继续交流。
正在加载回复...