本文主要是介绍【无标题】1135bfs好题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
dfs当你找到了答案后就要设计一个值一直return否则会超时,
如果不能选一样的数就要开状态数组,你再main里面定义的变量如果你不传到函数里函数里面也
用不到
/*
广搜模板
q.push(初始状态);
while(q.size){
a=q.front();
q.pop();
for(枚举a的所以可到达状态){
if(本状态v合法){
执行标记操作;
q.push(v);
}
}
}
*/
#include<bits/stdc++.h>
using namespace std;
int n,a,b;
struct node{
int up,down;
int step;
bool visit;
}ns[210];
int v[210];
int main(){
int t;
cin>>n>>a>>b;
for(int i=1;i<=n;i++){
cin>>t;
ns[i].up=i+t;
ns[i].down=i-t;
ns[i].step=-1;
ns[i].visit=false ;
}
queue<node> q;
ns[a].step=0,ns[a].visit=true;//将第一个点放入队列设置为已经访问避免重复计算
q.push(ns[a]);
while(q.size()){
node f=q.front();
q.pop();
int u=f.up,d=f.down;
if(u>=1&&u<=n&&ns[u].visit==false){
ns[u].visit=true;
ns[u].step=f.step+1;
q.push(ns[u]);
}
if(d>=1&&d<=n&&ns[d].visit==false){
ns[d].visit=true;
ns[d].step=f.step+1;
q.push(ns[d]);
}
if(u==b||d==b) break;
}
cout<<ns[b].step;
}
这篇关于【无标题】1135bfs好题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!