当前位置: 首页 > 知识库问答 >
问题:

递归中的跳跃博弈

谢弘阔
2023-03-14

我试图测试自己理解递归的能力,所以我给自己一个任务,在递归中做跳跃游戏练习

给定一个非负整数数组,您最初位于数组的第一个索引处。数组中的每个元素代表该位置的最大跳转长度。你的目标是在最小的跳跃次数内达到最后一个指数。

https://leetcode.com/problems/jump-game-ii/

我试图修改这部分代码,但它没有出现在调试器上,因此我没有真正看到这部分代码中的问题

def function(array, index, counter):
    if index >= len(array):
        return counter
    min_step = float('inf')
    for i in range(1, array[index]):
        min_step = min(min_step, function(array, index + i, counter + 1))

    return min(min_step, function(array[1:], index, counter))

如果有人能告诉我,我的想法是否正确

谢谢你:)

共有1个答案

宋铭
2023-03-14

你的功能很好,只是几个修复:

  1. 你想得到最后一个索引,它是len(数组)-1,而不是len(数组)
  2. 要启用跳转到当前数组值的距离,因此需要范围(1,数组[index] 1)而不是范围(1,数组[index])
  3. min_step已经包含最少的跳跃量。我不知道你想返回什么,但是你可以返回min_step。

考虑到这一点:

def function(array, index, counter):
    if index >= len(array) - 1:
        return counter
    min_step = float('inf')
    for i in range(1, array[index] + 1):
        min_step = min(min_step, function(array, index + i, counter + 1))

    return min_step
 类似资料:
  • 在Geeks for Geeks中分析了以下问题: 给定一个整数数组,其中每个元素表示可以从该元素向前执行的最大步数。编写一个函数,返回到达数组末尾(从第一个元素开始)的最小跳转次数。如果元素为0,则它们无法通过该元素。如果无法到达endpoint,则返回-1。 这个问题的递归解决方案是递归当前元素的每一个可能的步骤,并返回最小跳跃。因此,如果数组的大小是,那么对于第一个元素,我们有步骤(选择)递

  • 跳跃表(skiplist)是一种随机化的数据, 由 William Pugh 在论文《Skip lists: a probabilistic alternative to balanced trees》中提出, 跳跃表以有序的方式在层次化的链表中保存元素, 效率和平衡树媲美 —— 查找、删除、添加等操作都可以在对数期望时间下完成, 并且比起平衡树来说, 跳跃表的实现要简单直观得多。 以下是个典型的

  • 在我的跳棋代码中,我试图让它这样做,每当一个棋子落在它能够跳跃的地方时,它就会被强制跳跃。在我的代码中,它会突出显示你可以跳跃的地方。我已经做了它,这样你就可以跳跃其他棋子之类的,但是我还没有找到一种方法来强迫玩家跳跃。使用布尔值和一种方法更可取的是扫描棋盘进行跳跃并禁用所有的图块,除了正在跳跃的图块和你将要跳跃的图块。 主要类别 结束主类 平铺等级 结束瓷砖类 你有什么想法或建议吗?

  • 我想创造一个像飞鸟一样的游戏。我想让玩家在屏幕上不断跳跃。我创造了这个代码,它不像一只扑翼鸟跳 代码: 问题是当用户在屏幕上快速点击时,玩家就像火箭一样被击中。当玩家跌倒时,跳跃更低。我该如何解决这个问题,并获得相同的跳跃强度? 我的解决方案:

  • 《游戏跳跃》是一款模拟开发游戏的放置游戏,和《卡牌冒险》《稳定宝石放置》一样,用的同一个增量游戏开发模板开发的。

  • 问题内容: 我有这个xml输入文件: 我的目标是删除没有价值的任何第二层。为此,我编写了以下代码: 我的问题是。它每隔第二级跳过一次。这是此代码的输出: 现在,如果我取消注释该行,则脚本可以完美运行,但是输出效果不佳,因为它保留了所有已删除的 第二级 : 有人知道我的陈述为什么错误吗? 问题答案: 您正在遍历活动树: 然后在迭代时进行更改。该迭代的“计数器”将不被告知更改的一些元素,所以元素0前瞻