演算法第一期 漢諾塔問題 python通俗易懂版

2021-10-10 16:10:48 字數 978 閱讀 5684

問題描述:

漢諾塔(hanoi tower),又稱河內塔,源於印度乙個古老傳說。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片**圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,任何時候,在小圓盤上都不能放大圓盤,且在三根柱子之間一次只能移動乙個圓盤。問應該如何操作?

問題分析:

1.要把n個圓盤從a搬c,只能先把n-1的圓盤從a搬到b,再把第n個圓盤從a搬到c。

2.要把n-1個圓盤從a搬b,只能先把n-2的圓盤從a搬到c,再把第n-1個圓盤從a搬到b。

3.要把n-2個圓盤從a搬c,只能先把n-3的圓盤從a搬到b,再把第n-2個圓盤從a搬到c。

這樣就不難發現,我們可以步驟總結為:

n個盤子時:

1.把n-1個圓盤從a移動到b(移動期間借助c)

2.把第n個圓盤從a移動到c(移動期間借助b)

3.把n-1個圓盤從b移動到c(移動期間借助a)

實現**:

def hannuota(n,a,b,c):

if n > 0:

hannuota(n-1,a,c,b)

print("%s 移動到 %s"%(a,c))

hannuota(n-1,b,a,c)

hannuota(3,"塔a","塔b","塔c")

輸出:

塔a 移動到 塔c

塔a 移動到 塔b

塔c 移動到 塔b

塔a 移動到 塔c

塔b 移動到 塔a

塔b 移動到 塔c

塔a 移動到 塔c

規劃小結(第一期)

一月一小結,這是規劃裡既定的方案,而從正式開學大現在也剛有31天了,所以寫下第一期的規劃小結,和有關於下一期的規劃安排。在第一期的學習中,其實是在原本的規劃上有一定小的調整的,總結的概括如下 第一 調整了對於bootloader的學習,在這一期主要將bootloader進行了乙個系統的了解,而並未著...

總結做完第一期專案

首先,對於這個專案,需求不是很明確,然後要到交貨的時候,都還在趕,還在添需求,給研發來說,心驚膽顫,因為怕新增的會有影響。所以,一定在前期,先把需求整理好。如果對需求沒有理解充分,就及時的與客戶交流。當然,也會遇到傳說中的不好交流的客戶,給研發人員來說,那就是一種壓力,所以不想去理睬客戶。但是最後傷...

第一期 第八題

a b problem too problem description this problem is also a a b problem,but it has a little difference,you should determine does a b could be divided w...