社区讨论
p1032字符变化 啊,程序炸了
P1032[NOIP 2002 提高组] 字串变换(疑似错题)参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mi7cq49z
- 此快照首次捕获于
- 2025/11/20 19:32 4 个月前
- 此快照最后确认于
- 2025/11/20 19:32 4 个月前
求助大佬,为什么这个程序会爆空间啊
#include<bits/stdc++.h>
using namespace std;
struct st{string b; string a;
string now; int num;
};
vectoradj;
string s,ss
;
bool bfs(){//xian pan duan zai chuli
queueq; setvis;
st temp; temp.now=s; temp.num=0;
q.push(temp); while(!q.empty()){
st u=q.front(); q.pop();
if(u.num>10)return false;
for( int i=0;i<adj.size();i++){
string a1=adj[i].a; string b1=adj[i].b;
if(u.now.find(a1)){int wei=u.now.find(a1);
while(u.now.find(a1,wei)){
u.now.replace(wei,a1.size(),b1);
wei++;// ranhuopanchong
}
}if(u.now==ss){printf("%d",u.num); return true;}
if(!vis.count(u.now)){
st v=u;
v.num++; q.push(v);
vis.insert(v.now);}
}
}
printf("fuck");
CPP return false;
}
int main(){
// freopen("string.in","r",stdin);
//freopen("string.out","w",stdout);
scanf("%s%s",&s,&ss);
st ad[10]; int num1=0;
// while(cin>>ad[num1].a>>ad[num1].b){num1++;}
// num1--;//chu vector
for(int k=0;k<3;k++){
scanf("%s%s",&ad[k].a,&ad[k].b);
}
for(int j=0;j<num1;j++){ adj.push_back(ad[j]); }
if(bfs()==0)printf("NO ANSWER");
// fclose(stdin);
// fclose(stdout);
return 0;}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...