您的位置:首页 > 其它

计蒜客刷题之旅 之 跳跃游戏

2018-02-13 22:16 302 查看
给定一个非负整数数组,假定你的初始位置为数组第一个下标。

数组中的每个元素代表你在那个位置能够跳跃的最大长度。

请确认你是否能够跳跃到数组的最后一个下标。

例如: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≤n≤500),接下来的一行 n 个整数,输入数组 Ai

​ 。

输出格式

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

样例输入

5

2 0 2 0 1

样例输出

true

#include <iostream>
using namespace std;

int main()
{
unsigned int n;
cin >> n;

//获取数据
unsigned int length
;
for(unsigned int i=0; i<n; i++)
cin >> length[i];

//初始化最远可达下标为第一个下标处可达的最远距离
unsigned int farthest = length[0];
//遍历length,从前往后逐个根据当前位置可达距离更新所能到达的最远下标
for(unsigned int current=1; current<n; current++){
//在不能到达当前下标时提前退出遍历
if(farthest < current)
break;
//最远可达下标取大
farthest = farthest>current+length[current]?farthest:current+length[current];
}

//使用的容器为数组,最后一个下标为n-1,而不是n(第一次因此WA)
cout << (farthest>=n-1?"true":"false");

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  贪心 计蒜客