有一些点超时了,代码在这里:
#include<bits/stdc++.h>
using namespace std;
int n,a1,b,a[1145],vis[1145],ans=100000;
void e(int k,int s)
{
if(s>=ans)return;
if(k==b){
ans=min(s,ans);
return;}if(k>a[k]&&vis[k-a[k]]==0){
vis[k-a[k]]=1;
e(k-a[k],s+1);
vis[k-a[k]]=0;}if(n>=k+a[k]&&vis[k+a[k]]==0){
vis[k+a[k]]=1;
e(k+a[k],s+1);
vis[k+a[k]]=0;}}
int main(){
cin>>n>>a1>>b;
for(int i=1;i<=n;i++){
cin>>a[i];}
e(a1,0);
if(ans==100000)
{
cout<<"-1";
return 0;
}
cout<<ans;
return 0;}