汉诺塔变种问题

问题描述

汉诺塔问题中限制不能将一层塔直接从最左侧移动到最右侧,也不能直接从最右侧移动到最左侧,而是必须经过中间。求当有N层塔的时候移动步数。

代码部分(python3)

打印出移动过程:

def hanoi(num):
    global steps
    if num == 1:
        print(A+'2'+B)
        print(B+'2'+C)
    else:
        hanoi(num-1)
        print(A+'2'+B)
        hanoi(num-1)
        print(B+'2'+C)
        hanoi(num-1)


N = int(input())
hanoi(N)

求移动次数

N = int(input())
def hanoi(num):
    if num == 1:
        return 2
    else:
        return hanoi(num-1) * 3 + 2

print(hanoi(N))

猜你喜欢

转载自www.cnblogs.com/zxpnotebook/p/10120004.html