看不懂Pascal 不好意思 不过您可以参考下我的代码 方法和您一样 都是dfs 不过有剪枝
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,a,b,k[205],min_times=100000000;
bool use[205];
void dfs(int now,int times)
{
if(times>=min_times) return;
if(now==b)
{
min_times=min(min_times,times);
return;
}
use[now]=true;
if(now+k[now]<=n&&!use[now+k[now]]) dfs(now+k[now],times+1);
if(now-k[now]>=1&&!use[now-k[now]]) dfs(now-k[now],times+1);
use[now]=false;
}
int main()
{
memset(use,false,sizeof(use));
cin>>n>>a>>b;
for(int i=1;i<=n;i++) cin>>k[i];
dfs(a,0);
if(min_times==100000000) cout<<"-1"<<endl;
else cout<<min_times<<endl;
return 0;
}
```
by Patrickpwq @ 2018-05-20 00:19:26
```
2 1 2
1 1
```
会爆栈的
by hehezhou @ 2018-05-20 06:26:33
@[Patrickpwq](/space/show?uid=60299) 蟹蟹,我看得懂c++,您的dfs比我强多了,我的只是个递归而已QAQ
by Kujolord @ 2018-05-20 09:11:43
@[zhr596082417](/space/show?uid=67371) 蟹蟹提供翻车数据
by Kujolord @ 2018-05-20 09:12:13