python實現漢諾塔問題

2021-08-27 05:32:45 字數 559 閱讀 2999

count = 0

defhanoi

(n, x, y, z):

#圓盤數量, 起始柱子,中間柱子,目標柱子,

global count

if n == 1:

print("{}:{}->{}".format(1, x, z))

count += 1

else:

hanoi(n-1, x,z,y) #把(n-1)個圓盤從x移到y上,需借助z: x->z->y

print("{}:{}->{}".format(n,x,z)) #把最下面的n直接從x->z

count += 1

hanoi(n-1,y,x,z) #(n-1)個圓盤從y移到z上,需借助x:y->x->z

num = eval(input("請輸入漢諾塔問題的圓盤數目:"))

hanoi(num, 'a', 'b', 'c')

print("搬運次數:",count)

python實現漢諾塔問題

以下圖的三層漢諾塔為例,開始柱指的是開始狀態時存放所有盤子的柱子,中轉柱指的是中間狀態時暫時存放n 1個 三層就是3 1個 盤子的柱子,目標柱指的是盤子最終要移動到的柱子。這裡需要注意,開始柱,中轉柱,目標柱並不是一成不變的,而是會根據層次的不同而改變。漢諾塔問題可這麼簡單理解 要解決從下往上數第n...

python 漢諾塔 Python漢諾塔

import turtle class stack def init self self.items def isempty self return len self.items 0 def push self,item def pop self return self.items.pop def ...

Python實現漢諾塔

原始碼 move n,a,b,c 這個函式不要理解為abc三個柱子。請這樣理解,move函式,用來完成這麼乙個任務 把n個盤子,從 源柱 通過 過渡柱 移動到 目標柱 上。即move n,source,bridge,destination 為了完成這個任務,需要將此母任務分解為三個子任務 1.把 源...