漢諾塔(又稱河內塔)問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片**圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。
那些智力題總是要求人們用最少的步驟完成題目中的要求。為什麼非要最少呢?這次我們來點特別的,我希望你的程式能夠用最多的步數達到要求,而且在此過程中不重複出現任何一種狀態。
請聯想曾經學過的漢諾塔知識。
輸入包含多組資料測試,每組資料只有圓盤數n( 1 <= n <= 12)
對於每組資料輸出符合條件的搬盤子的最多次數13
12226531440
思路如下:假設從a到c經過b,只有乙個盤子時,需要先把它移到b,再把它移到c,兩個及以上時,記hanio(n)為n個盤子移動次數,需要先把n-1個盤子移到c(hanio(n-1)),把第n個盤子移到b(1次),再把n-1個盤子移到a(hanio(n-1)),把第n個盤子移到c(1次),再把n-1個盤子移到c(hanio(n-1)),也就是hanio(n)=3*hanio(n-1)+2;
#include
long
long
hanio
(int n)
;int
main()
return0;
}long
long
hanio
(int n)
else
return sum;
}
漢諾塔移動
漢諾塔的移動可以用遞迴函式非常簡單地實現。請編寫move n,a,b,c 函式,它接收引數n,表示3個柱子a b c中第1個柱子a的盤子數量,然後列印出把所有盤子從a借助b移動到c的方法,例如 期待輸出 a c a b c b a c b a b c a c move 3,a b c 乙個環 ste...
漢諾塔移動步驟
漢諾塔 漢諾塔 又稱河內塔 問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。不追求漢...
移動多少盤子才能完成漢諾塔遊戲
漢諾塔 又稱河內塔 問題是印度的乙個古老的傳說。在乙個廟裡有三根金剛石棒,第一根上面套著 64 個圓的金片,最大的乙個在底下,其餘乙個比乙個小,依次疊上去,廟裡的眾僧不停地把它們乙個個地從這根棒搬到另一根棒上,規定可利用中間的一根棒作為輔助,但每次只能搬乙個,而且大的不能放在小的上面。經過運算移動圓...