计蒜客-----跳跃游戏(C语言)

/********************************************************
给定一个非负整数数组,假定你的初始位置为数组第一个下标。
数组中的每个元素代表你在那个位置能够跳跃的最大长度。
请确认你是否能够跳跃到数组的最后一个下标。
例如:
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。
*********************************************************/
/*********************************************************
思路:假定数组元素A[i]=k;则意味着从数组下表i可到达i+1,i+2,
。。。。。i+k;
我们定义max为从i位置调最大的长度达到的位置,将i+A[i];
如果从第一个位置A[0]开始,将能达到的位置都跳最大的长度,若
下一步跳出的最大长度达到的位置大于上一步,则将最大位置更新
。如此推算,当最大位置大于数组最后一个元素的下标,说明可以
到返回true;否则返回false。
************************************************************/
#include<stdio.h>
int main()
{
    int A[500];
    int i,n;
    int ptr;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&A[i]);
    int max=A[0];
    for(ptr=0;ptr<=max;ptr++)
        if(A[ptr]+ptr>max)
            max=A[ptr]+ptr;
    if(ptr>n-1)
        printf("true\n");
    else
        printf("false\n");
    return 0;
}
posted @ 2018-09-15 19:36  码猿乌鸡国  阅读(1019)  评论(0)    收藏  举报