問題描述:
相傳在古印度聖廟中,有一種被稱為漢諾塔(hanoi)的遊戲該遊戲是在一塊銅板裝置上,有三根杆(編號a、b、c),在a杆自下而上、由大到小按順序放置64個金盤(如下圖)。遊戲的目標:把a桿上的金盤全部移到c桿上,並仍保持原有順序疊好。操作規則:每次只能移動乙個盤子,並且在移動過程中三根桿上都始終保持**在下,小盤在上,操作過程中盤子可以置於a、b、c任一桿上。
解決思路:
(1)以c盤為中介,從a杆將1至n-1號盤移至b杆;
(2)將a桿中剩下的第n號盤移至c杆;
(3)以a桿為中介;從b杆將1至n-1號盤移至c杆。
php**實現:
/*** 漢諾塔(3根柱子)
* @param unknown $n
* @param string $a // 當前位置
* @param string $b // 中轉位置
* @param string $c // 目標位置
*/function hanoi($n,$a='a',$b='b',$c='c')->
"; }else->
"; // 將最**直接從a柱移到c柱
hanoi($n-1,$b,$a,$c); // 再將b柱上的盤子,借助a柱,全部移到c柱
}}//測試:
hanoi(3,$a='a',$b='b',$c='c')
執行結果:
a->c
a->b
c->b
a->c
b->a
b->c
a->c
思考:假如是4根柱子的漢諾塔,怎麼移動效率最高?
php實現漢諾塔問題
漢諾塔 又稱河內塔 問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。簡而言之,有三根...
Python解漢諾塔問題
一 什麼是漢諾塔問題 這個問題 於印度。有三個金剛石塔,第乙個從小到大摞著64片 圓盤。現在把圓盤按大小順序重新擺放在最後乙個塔上。並且規定,在小圓盤上不能放大圓盤,在三個塔之間一次只能移動乙個圓盤。二 實現 a a b b c c def hanno a,b,c,n if n 1 print fo...
Python演算法 遞迴精解 漢諾塔問題
將a 柱子上的塊轉移到 c 上 條件1 每次只能轉移一塊 條件2 大塊不能壓小快 冰箱裝大象問題 1.開啟冰箱 2.放入大象 3.關上冰箱 模擬在 任何乙個塊 n 來說 1.把上面的塊都移動好 2.n 塊移動過去 3.之前上面的塊在放在 n 塊上面 簡化問題,考慮 123塊的移動,可以考慮成我想移動...