Python检查是否有可能通过左跳或右跳到达数组的最右端

标签 python algorithm recursion

我正在编写一个程序来判断游戏是可解还是不可解。 游戏规则是:

  1. 你从最左边的位置开始
  2. 您可以在该位置按数组的值向左或向右跳,并且不能超出端点。例如:a={4,4,1,5,2,6,3,4,2,0} 你从最左边的位置开始,所以你可以跳到右边的 4 个位置到第 2 个位置(左边是不可能的)
  3. 我必须检查我们是否可以到达始终等于 0 的另一端。

  4. 如果我们能到达最右边(即 0)则它是可解的否则不可解

我试过在 Python 中使用递归,但不知道如何进行

 def KAuhop(b,c,d,current_position):
        position_move=b[current_position]
        if b[current_position+position_move]==0:
            print("found")
        else:
            KAuhop(b,current_position+position_move,d,current_position)
            print("Not found")




    a=[4,4,1,5,2,6,3,4,2,0]
    print(KAuhop(a,0,len(a)-1,0))

最佳答案

如果它可以向左或向右跳转位置,那么请说明程序应该何时结束或退出,否则它将变成无限循环,从一个位置跳到另一个位置。

请使用递归函数找到以下仅正确跳转的解决方案。

lis=[4,4,1,5,2,4,3,4,2,0]
last_pos=len(lis)-1
pos = 0+lis[0]

def kauhop(lis,pos):
    if (pos==last_pos):
        print("found")
        exit;
    else:
        new_pos = pos+lis[pos]
        if(new_pos <= last_pos):
            kauhop(lis,new_pos)
        else:
            print("Not found")

kauhop(lis,pos)

关于Python检查是否有可能通过左跳或右跳到达数组的最右端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47118379/

相关文章:

python - 我卡住了所有 keras 层,但使用 fit_generator 时模型发生了变化

python - 检测白色背景图像中的轮廓

Python 3 和带有进度条的请求

algorithm - 在具有特定属性的数组中搜索

arrays - 使用 Juggling 算法旋转数组

java - 减少属性树

python - 通过其父项修改嵌套字典键名

python - 在 Windows 8 上将麦克风级别设置为某个值

c++ - 图像降尺度算法

scala - 在函数式编程中难以进行递归树遍历;如何避免 StackOverflow?