#include<bits/stdc++.h> using namespace std; int n,a,b; int k[201]; int sum[201];//步数 void dfs(int f,int step){ // cout<<f<<endl; if(f==b) sum[b]=min(sum[b],step-1); else { int tf=f+k[f];//向上 if(tf>=1&&tf<=n&&sum[tf]>step+1){//在舞台上,并且步数更少 sum[tf]=step+1; dfs(tf,step+1); } tf=f-k[f];//向下 if(tf>=1&&tf<=n&&sum[tf]>step+1) { sum[tf]=step+1; dfs(tf,step+1); } } } int main(){ cin>>n>>a>>b; for(int i=1;i<=n;i++) { cin>>k[i]; sum[i]=10086;//最值 } dfs(a,1); cout<<sum[b]; return 0; } /************************************************************** Problem: 1819 User: liuchengxuan Language: C++ Result: Wrong Answer ****************************************************************/