当前位置:   article > 正文

跳跃游戏之贪心算法_为什么跳跃游戏是贪心的

为什么跳跃游戏是贪心的

贪心算法

一、基本概念

贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,它所做出的仅仅是在某种意义上的局部最优解
贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。

二、贪心算法的基本思路

1.建立数学模型来描述问题
2.把求解的问题分成若干个子问题
3.对每个子问题求解,得到子问题的局部最优解
4.把子问题的解局部最优解合成原来问题的一个解

三、该算法存在的问题

1.不能保证解是最佳的。因为贪心算法总是从局部出发,并没从整体考虑
2.贪心算法一般用来解决求最大或最小解
3.贪心算法只能确定某些问题的可行性范围

四、使用贪心算法的两个条件

1.最优子结构性质
如果一个问题的最优解包含其子问题的最优解,我们就称此问题具有最优子结构性质。
2.贪心选择性质
对于某个问题,如果我们可以通过做出局部最优(贪心)选择来构造全局最优解,那么我们就称该问题具有贪心选择性质。

跳跃游戏

给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。

示例 1:
输入: [2,3,1,1,4]
输出: true
解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。

示例 2:
输入: [3,2,1,0,4]
输出: false
解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。

思路:
1.不考虑每一步的如何向后跳跃
2.考虑是否可以到本位置,如果可以则计算本位置可跳跃的最远位置
3.选择记录最大的max_pos
4.遍历完后,若max_pos不小于末尾位置,return true

代码如下:
在这里插入图片描述
如有问题欢迎指出~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/518749
推荐阅读
相关标签
  

闽ICP备14008679号