您的位置:首页 > 其它

计蒜客题目 跳跃游戏

2018-02-11 16:55 253 查看
给定一个非负整数数组,假定你的初始位置为数组第一个下标。
数组中的每个元素代表你在那个位置能够跳跃的最大长度。
请确认你是否能够跳跃到数组的最后一个下标。
例如:A = [2,3,1,1,4]A=[2,3,1,1,4] 能够跳跃到最后一个下标,输出
true

A = [3,2,1,0,4]A=[3,2,1,0,4] 不能跳跃到最后一个下标,输出
false

输入格式

第一行输入一个正整数 n(1 \leq n \leq 500)n(1≤n≤500),接下来的一行 nn 个整数,输入数组 A_iAi​。

输出格式

如果能跳到最后一个下标,输出
true
,否则输出
false

样例输入

5
2 0 2 0 1

样例输出

true
#include<iostream>

using namespace std;

int main()
{
unsigned long n,k=0;
cin>>n;
unsigned long a
;
for(int i=0;i<n;i++){
cin>>a[i];
}
while((k<n)&&(a[k]!=0)){
k=k+a[k];
}
if(k>=(n-1)) cout<<"true";
else cout<<"false";

return 0;
}
思路:在没到达最后一个点之前,能跳多远跳多远。受问答区启发,最后的判断条件只需能否超过数组总长即可,不必恰好等于总长。这么一看给出的用例也很贼,都是恰好跳到最后一个的,导致我最后一组测试总是不过……
笔记:short是半个word长,int是一个word长,long是一个或者二个word长。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: