【題目描述】
在a、b、c三根柱子上,有n個不同大小的圓盤(設半徑分別為1~n),一開始他們都疊在a上,你的目標是在最少的合法移動步數內將所有盤子從a塔移動到c塔。
遊戲中的每一步規則如下:
(1)每一步只允許移動乙個盤子(從一根柱子最上方到另乙個柱子的最上方);
(2)移動的過程中,你必須保證大的盤子不能在小的盤子上方(小的可以放在大的上面,最**子下面不能有任何其他大小的盤子);
例如,對於n=3的情況,乙個合法的移動序列式:
1 from a to c
2 from a to b
1 from c to b
3 from a to c
1 from b to a
2 from b to c
1 from a to c
給出乙個數n(n <= 10),求出最少步數的移動序列。
【輸入描述】
乙個整數n。
【輸出描述】
第一行乙個整數k,代表是最少的移動步數;
接下來k行,每行一句話:「n from x to y」,表示把n號盤從x柱移動到y柱。x、y屬於。
【樣例輸入】
3【樣例輸出】
71 from a to c
2 from a to b
1 from c to b
3 from a to c
1 from b to a
2 from b to c
1 from a to c
源**:#include
intn;
void solve(int n,char a,char c,char
b)int main() //
orz sakits神犇,神犇說usaco才是正規宗教。
/*此題雖小,但能集大成於一身。codevs不少好題都是**的標籤,真乃「偌看衣冠不嚐才」是也。
①漢諾塔遊戲中,n個盤子最少移動總數為(2^n-1);
②solve(n,a,b,c)表示把前n個盤子從a柱移動到b柱上,在子程式裡,要移動前n個到b,就必須把前n-1個移動到c,才能讓第n個到b,所以先solve(n-1,a,b,c),然後輸出這一步,最後把前n-1個移動到第n個所在的柱子上。
*/
漢諾塔遊戲
漢諾塔 於印度傳說的乙個故事,上帝創造世界時作了三根金剛石柱子,在一根柱子上從下往上按大小順序摞著64片 圓盤。上帝命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一回只能移動乙個圓盤。要想玩轉漢諾塔,需要先理解遞迴。如果乙個問題可以不斷地...
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 ...
列印漢諾塔遊戲軌跡
對於傳統的漢諾塔遊戲我們做乙個拓展,我們有從大到小放置的n個圓盤,開始時所有圓盤都放在左邊的柱子上,按照漢諾塔遊戲的要求我們要把所有的圓盤都移到右邊的柱子上,請實現乙個函式列印最優移動軌跡。給定乙個intn,表示有n個圓盤。請返回乙個string陣列,其中的元素依次為每次移動的描述。描述格式為 mo...