题目链接
思路:这是格子图,输入ai为在i这个格子之后会往后走几格。问你在第一个格子,能否到第t个格子。用dfs从1号格子搜,搜到t就return true,如果搜过了t就return false
#include<iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 30010;
int a[N];
bool getpeach(int cur,int target)
{
if(cur==target)return true;
if(cur>target)return false;
return getpeach(cur+a[cur],target);
}
int main()
{
int n,t;
cin>>n>>t;
for (int i = 1; i <= n; i ++ )cin>>a[i];
if(getpeach(1,t))printf("YES");
else printf("NO");
return 0;
}