跳跃游戏-贪心

给定一个非负整数数组,假定你的初始位置为数组第一个下标。

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

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

例如:A = [2,3,1,1,4]A=[2,3,1,1,4] 能够跳跃到最后一个下标,输出true;

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

输入格式

第一行输入一个正整数n(1≤n≤500),接下来的一行 n个整数,输入数组 Ai。

输出格式

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

样例输入

5
2 0 2 0 1
样例输出

true
代码虽然AC了但觉着存在问题比如3 3 1 0  3 这组数据根据题意来说,应该是true,但测试是false。
#include

using namespace std;

int main()
{
   int a[500];
   int n;
   int sum=0;
   cin>>n;
   for(int i=0;i
    cin>>a[i];
  for(int i=0;i
  {
      sum=sum+a[sum];
      if(sum>=n-1)
      {
          cout<<"true";
          break;
      }
      else if(a[sum]==0)
      {
          cout<<"false";
          break;
      }

  }
  return 0;
}

posted @ 2017-10-21 14:02  besti_kuroko  阅读(118)  评论(0编辑  收藏  举报