思路
我没想到这可以用bfs的方式
来做。要用结构体和queue哦!
最短路径其实也行但就不展示代码了。
先设0!!!
在进行深搜,找位置!
输出注意。
bits/stdc++.com更好
不然要写好几个头文件。
代码
已AC #include<bits/stdc++.h>
using namespace std;
struct node
{
int to,step;
node(){}
node(int to1,int step1):to(to1),step(step1){}
};
int s[250];
int vis[250];
int main()
{
memset(vis,0,sizeof(vis));
int n,a,b;
scanf("%d%d%d",&n,&a,&b);
for(int i=1;i<=n;i++) scanf("%d",&s[i]);
queue
Q.push(node(a,0));
vis[a]=1;
while(!Q.empty()){
node x=Q.front();
Q.pop();
if(x.to==b){
printf("%d\n",x.step);
return 0;
}
if(x.to+s[x.to]<=n&&(!vis[x.to+s[x.to]])){
Q.push(node(x.to+s[x.to],x.step+1));
vis[x.to+s[x.to]]=1;
}
if(x.to-s[x.to]>=1&&(!vis[x.to-s[x.to]])){
Q.push(node(x.to-s[x.to],x.step+1));
vis[x.to-s[x.to]]=1;
    }
}
printf("-1\n");
return 0;
}
