蒟蒻初学搜索,大概思路懂了,然后打了一下(~~对着题解学习我真的没有想抄!~~然后交上去之后tle了3个
我好像剪枝也剪了不知道为什么不会过?
求大佬指点呜呜
#include<iostream>
#include<cstdio>
using namespace std;
int a[205];
int n,t,b;
int m=1;
int ans=1000000;
int via[210];
void lift(int dep,int sum)
{
if(dep==b)
{
ans=min(sum,ans);
return;
}
if(sum>ans)
return;
via[dep]=1;
if(dep+a[dep]<=n&&via[dep+a[dep]]==0)
lift(dep+a[dep],sum+1);
if(dep-a[dep]>=1&&via[dep+a[dep]]==0)
lift(dep-a[dep],sum+1);
via[dep]=0;
}
int main()
{
cin>>n>>t>>b;
for(int i=1;i<=n;i++)
cin>>a[i];
via[t]=1;
lift(t,0);
if(ans!=1000000)
cout<<ans;
else
cout<<"-1";
}