【贪心】跳跃游戏

1.png

解题思路:贪心

局部最优:这题只要查看每个元素的覆盖范围即可,若覆盖范围不到最后一个元素,则代表无法到达

1.若数组只有一个元素,返回true

2.遍历数组cover次(cover会被更新),每遍历一次将当前覆盖值与之前覆盖值作比较,若当前覆盖值较大则更新覆盖范围变量cover的值。然后进行比较,查看是否能到达最后一个元素,若能返回true

3.若没有返回true,则返回false

int iterJump(int* nums, int numsSize, int index) {
    if(index >= numsSize-1)
        return 1;
    int i;
    for(i = nums[index]; i >0 ; i--) {
        int k = iterJump(nums, numsSize, index+i);
        if(k == 1)
            return 1;
    }
    return 0;
}

bool canJump(int* nums, int numsSize){
    return iterJump(nums, numsSize, 0);
}

2.PNG