代码:
#include <bits/stdc++.h>
using namespace std;
struct point{
int up,down,d;//up:向上能走到哪一层 down:向下能走到哪一层 d:现在按了几次按钮
bool bl;//此楼层是否有走过(0没走过 1走过)
}c[210];
int main(){
//输入
int n,a,b,num[210];
cin>>n>>a>>b;
for(int i=1;i<=n;i++){
cin>>num[i];
c[i].up = i+num[i];
c[i].down = i-num[i];
c[i].d = -1;
c[i].bl = 0;
}
c[a].d=0;
c[a].bl=1;
queue<point> q;
q.push(c[a]);
//BFS
while(!q.empty()){
point p = q.front();
q.pop();
int fl=p.up;
if(fl>0 && fl<=n && p.bl==0){
c[fl].bl = 1;
c[fl].d = p.d+1;
q.push(c[fl]);
}
if(fl==b) break;
fl=p.down;
if(fl>0 && fl<=n && p.bl==0){
c[fl].bl = 1;
c[fl].d = p.d+1;
q.push(c[fl]);
}
if(fl==b) break;
}
//输出
cout<<c[b].d;
return 0;
}
结果不管输入什么,输出都是-1
请大佬们帮忙调一下!