经典的蘑菇跳跃问题求解答

李学长最近迷上了一款横屏 2D 游戏,游戏规很简单,操控角色从起点出发,每次选择向前跳跃 x 个方块,到达既可。但是问题往往没有这么简单,每个角色都有初始体力,每跳一次消耗的体力和方块数成正比,有些方块上面都有增加体力的传统蘑菇或者减少体力的科技蘑菇,你能否思考一下怎样的策略才能帮李学长达到终点,并且剩余的体力够多?那要是消耗的体力是跳的距离的平方呢?
第一种情况应该是只跳加体力的蘑菇,第二种情况应该怎么解决呢?没有思路啊,求解答

第二种情况要算是跳过去直接跳到后面的蘑菇上减的体力少还是先跳蘑菇上减的体力少
如果体力和跳的距离成正比,那肯定是不吃蘑菇更节省体力,如果是和平方成正比,那吃蘑菇节省体力

https://leetcode.cn/circle/discuss/bMmxI9/

这个第二题 绝对不能用穷举。
看这样行不行,假设方格长度是l, 初始体力是h,正蘑菇加x,负蘑菇减y
先有一个数学论证是 如果是平方,那么还是分的最小的步数是最省体力的,比如 如果要跳5步 拆分成每次只跳1步是最省的,最小是5,只要有一个是2,就会比5大。
接下来就是开始跳了,如果体力是h,那么最大可以跳h格,那么中间可能遇到负蘑菇,
第一步 :先1格1格跳,如果遇到负蘑菇,如果y>=3那么跳2格,那么这一步最小是损失4。 如果y<3,跳一格,这一步最少损失是1+y<4
第二步: 继续一格一格跳,只有遇到负蘑菇才有跳一格或者2格的选择,其它都是跳一格
第三步: 还有一种情况是连续的负蘑菇,这种把第一步扩展一下就行了
第四步: 计算遇到负蘑菇的损失,和步数的最小损失,剩下的就是最大体力值

完毕。

这个可能会帮到你

博主参考下面链接
https://leetcode.cn/circle/discuss/bMmxI9/

力扣上面类似的跳跃游戏