题意还是很容易读懂的:就像跳格子一样,从第一个格子开始跳,格子上的写的数再加上所在的格子的序号就是下一步要去的格子。(只能去,不能回来。。)
刚开始这组数据没考虑到:
Input
10 9 8 3 5 4 2 3 2 2 1
Output
YES
代码:
<pre name="code" class="cpp">#include<cstdio>
#include<cstring>
#include<algorithm>
int a[50000+11];//尽量开大些。。
int main(){
int n,t,flag=0;
scanf("%d%d",&n,&t);
for(int i=0;i<n-1;i++){
scanf("%d",&a[i]);
}
int sum=a[0]+1;//下一步要到达的格子
for(int j=1;j<t;j++){
if(sum==t){//先判断。。
flag=1;break;
}
if(sum>t){
break;
}
sum+=a[sum-1];
}
if(flag)
printf("YES\n");
else
printf("NO\n");
return 0;
}