666活全家运行错误
2024-12-04 23:28:17
发布于:浙江
8阅读
0回复
0点赞
诗山代码,只能对一个点,思路看一眼就能看出来,有没有人帮忙看看
#include<iostream>
#include<queue>
#include<string>
#include<cstring>
using namespace std;
string s,f;
int ans;
string vis[3999];
struct node{
string n;int step;
};
bool find(string ss){
for(int i=1;i<=sizeof(vis);i++){
if(ss==vis[i]){return false;}
}
return true;
}
void bfs(){
vis[1]=s;
queue<node> q;
q.push({s,0});
while(!q.empty()){
node t=q.front();
q.pop();
if(t.n==f){cout<<t.step;return;}
for(int i=0;i<t.n.length();i++){
if(i-1>=0&&t.n[i-1]=='*'){
string ns=t.n;
ns[i-1]=ns[i];
ns[i]='*';
if(find(ns)){q.push({ns,t.step++});vis[sizeof(vis)+1]=ns;}
}
if(t.n[i+1]=='*'){
string ns=t.n;
ns[i+1]=ns[i];
ns[i]='*';
if(find(ns)){q.push({ns,t.step++});vis[sizeof(vis)+1]=ns;}
}
if(t.n[i+2]=='*'){
string ns=t.n;
ns[i+2]=ns[i];
ns[i]='*';
if(find(ns)){q.push({ns,t.step++});vis[sizeof(vis)+1]=ns;}
}
if(i-2>=0&&t.n[i-2]=='*'){
string ns=t.n;
ns[i-2]=ns[i];
ns[i]='*';
if(find(ns)){q.push({ns,t.step++});vis[sizeof(vis)+1]=ns;}
}
if(t.n[i+3]=='*'){
string ns=t.n;
ns[i+3]=ns[i];
ns[i]='*';
if(find(ns)){q.push({ns,t.step++});vis[sizeof(vis)+1]=ns;}
}
if(i-3>=0&&t.n[i-3]=='*'){
string ns=t.n;
ns[i-3]=ns[i];
ns[i]='*';
if(find(ns)){q.push({ns,t.step++});vis[sizeof(vis)+1]=ns;}
}
}
}
}
int main(){
cin>>s>>f;
bfs();
return 0;
}
这里空空如也
有帮助,赞一个