[LeetCode-55]基于贪心算法的跳跃游戏的求解(C语言版)

/*

题目出处:LeetCode

题目序号:55. 跳跃游戏

题目叙述给你一个非负整数数组 nums ,你最初位于数组的第一个下标位置 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false

*/

程序清单

#include<stdio.h>

#define TRUE 1
#define FALSE 0

int TestJump(int *nums, int length) {
    int index;
    int farthest = 0;    // 最远距离
    int jump[length];
    for(index = 0; index < length; index++){
        jump[index] = index + nums[index];
    } 
    if (length == 1) {
        printf("可以跳到最后。");    // 如果起始位置就是终点,则可以到达 
        return TRUE;
    }
    for (index = 0; index <= farthest; index++) {
        if(farthest < jump[index]) {
            farthest = jump[index];
        }
        if (farthest >= length - 1) {
            printf("可以跳到最后。");
            return TRUE;
        }
    }
    printf("无法跳到最后。");
    return FALSE;
}

int main() {
    int n,i;
    printf("请输入您想测试的数组的长度:\n");
    scanf("%d",&n);
    int a[n];
    printf("请输入数组元素:\n");
    for (i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    TestJump(a,n);
    return 0;
}

运行结果

猜你喜欢

转载自blog.csdn.net/tangguofeng/article/details/143365380