漢諾塔是遞迴分治思想不得不說的經典案例。
漢諾塔(又稱河內塔)問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片**圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。
後來,這個傳說就演變為漢諾塔遊戲,玩法如下:
1.有三根桿子a,b,c。a桿上有若干碟子
2.每次移動一塊碟子,小的只能疊在大的上面
3.把所有碟子從a杆全部移到c桿上
我們如何實現漢諾塔這個程式呢?
主要思想:遞迴分治的思想
(1).把a上的 n-1 個盤子移動到b上
(2).把a上第 n 個盤子移動到c上
(3).把b上的 n-1 個盤子移動到c上
下面就是漢諾塔的**實現。
public class hanno else
}public static void main(string args)
}
重學資料結構與演算法 漢諾塔
def hanoi n,a,b,c if n 0 hanoi n 1,a,c,b print moving from s to s a,c hanoi n 1,b,a,c hanoi 3,a b c 遞迴總體來說,要看整體,不能揪住細節不放,也就是說要按照不失一般性的思路來考慮。漢諾塔可以總結出3個...
java資料結構與演算法學習 BF演算法
bf演算法 brute force 是一種最基本的模式匹配演算法。bf演算法的實現思想很簡單 從目標串s 的第乙個字元起和模式串t的第乙個字元進行比較,若相等,則繼續逐個比較後續字元,否則從串s的第二個字元起再重新和串t進行比較。依此類推,直至串t 中的每個字元依次和串s的乙個連續的字串行相等,則稱...
資料結構與演算法學習
我想重新學習一下資料結構與演算法,打好基礎。to measure is to know.我們用演算法複雜度t n 來表示演算法的效率,效能。t n 的取值 所有問題規模為n的問題例項中,將他們的計算成本進行總體的比較,取出最壞情況下的值。有幾點需要catch,1.演算法執行的時間,會根據程式語言,作...