description
漢諾塔(又稱河內塔)問題是印度的乙個古老的傳說。開天闢地的神勃拉瑪在乙個廟裡留下了三根金剛石的棒a、b和c,a上面套著 n 個圓的金片,最大的乙個在底下,其餘乙個比乙個小,依次疊上去,廟裡的眾僧不倦地把它們乙個個地從a棒搬到c棒上,規定可利用中間的一根b棒作為幫助,但每次只能搬乙個,而且大的不能放在小的上面。僧侶們搬得汗流滿面,可惜當 n 很大時這輩子恐怕就很搬了聰明的你還有計算機幫你完成,你能寫乙個程式幫助僧侶們完成這輩子的夙願嗎?
input
第一行為乙個正整數n
output
若干行,表示將n個金片從a搬到c的全過程。
格式見樣例。
sample input 1
2sample output 1
move disk 1 from a to b
move disk 2 from a to c
move disk 1 from b to c
hint
n≤10
time limit
1000ms
memory limit
256mb
#include
#include
using
namespace std;
//所有圓盤按大小公升序編號
//n為移動圓盤總數,a為起點,b為中轉站,c為終點
void
move
(int n,
char a,
char b,
char c)
//要想從a移動n個圓盤到c,應先實現從a移動n-1個圓盤到b
move
(n -
1, a, c, b)
;//這時a柱只有圓盤n,c柱為空,可以直接將圓盤n從a移到c
printf
("move disk %d from %c to %c\n"
, n, a, c)
;//再把b柱上的n-1個圓盤移到c即可
move
(n -
1, b, a, c);}
intmain()
漢諾塔(河內塔)
1883年,一位法國的數學家edouard lucas 教授在歐洲的乙份雜誌上介紹了乙個相當吸引人的難題 迷人的智力遊戲。這個遊戲名為河內塔 tower of hanoi 它源自古印度神廟中的一段故事 也有一說是lucas 教授為增加此遊戲之神秘色彩而捏造的 傳說在古老的印度,有一座神廟,據說它是宇...
河內之塔 漢諾塔問題 遞迴
河內之塔 towersofhanoi 是法國人m.claus lucas 於1883年從泰國帶至法國的,河內為越戰時 北越的首都,即現在的胡志明市 1883年法國數學家edouardlucas曾提及這個故事,據說創世紀時benares有一座波羅教塔,是由三支鑽石棒 pag 所支撐,開始時神在第一根棒...
漢諾塔問題(遞迴)
題目描述 對於傳統的漢諾塔遊戲我們做乙個拓展,我們有從大到小放置的n個圓盤,開始時所有圓盤都放在左邊的柱子上,按照漢諾塔遊戲的要求我們要把所有的圓盤都移到右邊的柱子上,請實現乙個函式列印最優移動軌跡。給定乙個int n,表示有n個圓盤。請返回乙個string陣列,其中的元素依次為每次移動的描述。描述...