下面代码采用分治算法来解决该问题,时间复杂度为 O(n log n)。
def move(src, tar):
pan = src.pop()
tar.append(pan)
def dfs(n, src, buf, tar):
if n == 1:
move(src, tar)
return
dfs(n - 1, src, tar, buf)
move(src, tar)
dfs(n - 1, buf, src, tar)
def solveHanoi(A, B, C):
n = len(A)
dfs(n, A, B, C)
正确
错误