推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

用贪心算法求解跳跃游戏能否到达终点的过程

更新时间:2026-10-18 10:20:54 大小:38K 上传用户:烟雨查看TA发布的资源 标签:贪心算法跳跃游戏可达性判断maxReachC语言实现 下载积分:2分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

用贪心算法求解跳跃游戏能否到达终点的过程 问题定义 给定一个非负整数数组 nums,其中 nums[i] 表示从第 个位置最多能向前跳跃的步数。从位置 0 出发,判断能否到达最后一个位置。 例如数组 [2, 3, 1, 1, 4] 可以到达终点(0->1->4),而 [3, 2, 1, 0, 4] 无法到达。 问题分析 跳跃游戏可以用贪心算法高效求解。关键洞察是:维护"当前能到达的最远位置",并不断更新。只要某一步的最远位置能覆盖到终点,就说明可达。 贪心策略 维护变量 maxReach,表示当前能到达的最远位置。 遍历每个位置 : 若 i > maxReach,说明位置 不可达,直接返回 false。 否则更新 maxReach = max(maxReach, i + nums[i])。 若遍历过程中 maxReach >= n-1,则可到达终点。 C 代码实现 c#include

int canJump(int *nums, int n) { int maxReach = 0; for (int i = 0; i < n; i++) { if (i > maxReach) return 0; // 当前位置不可达 if (i + nums[i] > maxReach) maxReach = i + nums[i]; if (maxReach >= n - 1) return 1; // 可到达终点 } return 1;}int main() { int nums1[] = {2, 3, 1, 1, 4}; int nums2[] = {3, 2, 1, 0, 4}; printf("%d\n", canJump(nums1, 5)); // 1,可到达 printf("%d\n", canJump(nums2, 5)); // 0,不可到达 return 0;} 运行结果分别为 1 和 0,符合预期。

部分文件列表

文件名 大小
用贪心算法求解跳跃游戏能否到达终点的过程.docx 38K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载