总感觉哪里不对???
#include<bits/stdc++.h>
using namespace std;
int a[210],n,x,y,ans;
bool b[210];
void bfs(int i,int step){
int s=i+a[i],xx=i-a[i];
if(i==y){
ans=min(ans,step);
return;
}
if(s<=n&&b[s]==0){
b[s]=1;
bfs(s,step+1);
}
if(xx>0&&b[xx]==0){
b[xx]=1;
bfs(xx,step+1);
}
}
int main(){
memset(b,0,sizeof(b));
cin>>n>>x>>y;
for(int i=1;i<=n;i++) cin>>a[i];
b[x]=1;
ans=INT_MAX;
bfs(x,0);
if(ans==INT_MAX) cout<<-1;
else cout<<ans;
return 0;
}
求指导