计蒜客 跳跃问题

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

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

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

例如:A=[2,3,1,1,4]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]A=[3,2,1,0,4] 不能跳跃到最后一个下标,输出false

输入格式

第一行输入一个正整数 n(1≤n≤500)n(1 \leq n \leq 500)n(1n500),接下来的一行 nnn 个整数,输入数组 AiA_iAi

输出格式

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

样例输入

5
2 0 2 0 1

样例输出

true

贪心算法


#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    int i,a[10000];
    int n,j,max=0;
    
    cin>>n;
    for(i = 0; i < n ;i++)
    cin>>a[i];
    for(j = 0; j < n ;j++)
    {
        if(j>max)
        {
            cout<<"false"<<endl;
            return 0;
        }
        if(j+a[j]>max)
        {
            max = j+a[j];
        }
    }
        cout<<"true"<<endl;
        return 0;
}

猜你喜欢

转载自blog.csdn.net/adiamond1/article/details/78310846