题目:
见https://www.luogu.com.cn/problem/P1135
思路:
普通的dfs,只是我之所以wa好像是因为没有加标记数组。。。
代码:
#include<iostream>
#include<climits>
#include<algorithm>
using namespace std;
const int N=205;
int n,A,B,a[N],ans=INT_MAX,temp,visit[N];
void dfs(int now)
{
if(now==B)
{
ans=min(ans,temp);
return;
}
if(temp>ans)
return;
temp++;
visit[now]=1;
if(now+a[now]<=n&&!visit[now+a[now]])
dfs(now+a[now]);
if(now-a[now]>=1&&!visit[now-a[now]])
dfs(now-a[now]);
temp--;
visit[now]=0;
return;
}
int main()
{
cin>>n>>A>>B;
for(int i=1;i<=n;i++)
cin>>a[i];
dfs(A);
visit[A]=1;
if(ans==INT_MAX)
cout<<-1<<endl;
else
cout<<ans<<endl;
return 0;
}