#include<bits/stdc++.h>
using namespace std;
int n,a,b,k[205],mini=1e9,sum;
bool vis[205]={false};
void dfs(int cur,int sum)
{
if(cur==b)
{
mini=min(mini,sum);
return ;
vis[cur]=false;
}
if(sum>mini)
return ;
vis[cur]=true;
if(cur+k[cur]>=1&&cur+k[cur]<=n&&vis[cur+k[cur]]==false)
dfs(cur+1*k[cur],sum+1);
else if(cur-k[cur]>=1&&cur-k[cur]<=n&&vis[cur-k[cur]]==false)
dfs(cur+-k[cur],sum+1);
vis[cur]=false;
return ;
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++)
cin>>k[i];
dfs(a,sum);
if(mini!=1e9)
cout<<mini;
else
cout<<"-1";
return 0;
}
思考一晚上写出来的代码变成了80分
求助!!!!