漢諾塔 河內塔 問題 遞迴

2021-10-05 08:32:17 字數 1217 閱讀 9703

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陣列,其中的元素依次為每次移動的描述。描述...