我在python中实现问题的方法如下。我理解最初的河内塔问题,即可以移动$ N $磁盘说第3个磁盘,并且有算法可以这样做,但我无法弄清楚如何列出每个阶段的每个磁盘。问题如下:
我想我可以使用如下所示的二叉树表示:
到目前为止,我想到的粗略的骨架代码看起来像是
def recursion(m,n,T):
pos = list(range(1,m))
index = 0
values = list(range(1,n))
tree = []
if pos[index+1] > pos[index]:
pos[index + 1] -= pos[index+1]
pos[index + 2] += pos[index+1]
tree.append(pos)
if pos[index+1] < pos[index]:
pos[index+1] += pos[index]
pos[index] -= pos[index]
tree.append(pos)
else:
recursion()
return tree
我非常感谢您对此提供的一些帮助
答案 0 :(得分:1)
你没有通过否。磁盘到您的功能,并且每次下次调用该函数时都必须减少此数字。并且有一个条件可以打破进一步的递归。这是修改后的表格
# n = no. of rods
def recurse(n , from_rod, to_rod, aux_rod):
if n == 1:
print "Move disk 1 from rod", from_rod, "to rod",to_rod
return
recurse(n-1, from_rod, aux_rod, to_rod)
print "Move disk", n, "from rod", from, "to rod", to
recurse(n-1, aux_rod, to_rod, from_rod)
n = 5
recurse(n, 'A', 'B', 'C')
答案 1 :(得分:0)