棧的應用 漢諾塔遊戲

2021-08-11 02:45:42 字數 879 閱讀 8375

他作為乙個理科生是嚴謹的,他認為天才與否,取決於最終達到的高度。一些事情不過比別人早幾年做到,算不上什麼天才。

---樓天成

棧(stack)

它的結構為lifo(last in first out)後進先出。如圖所示:

漢諾塔:

漢諾塔(又稱河內塔)問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根

金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片**圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。

思考一下解法:

假設有n個圓盤在x柱上,y,z柱都為空,需要將x的圓盤都按照原來的大小順序移到z上。

那麼首先要借助z,將x上的n-1個圓盤移到y,再將第n個圓盤移到z。

然後借助x,將y上的n-1個圓盤移到x,將第n個圓盤移到z。

如此下去。

c**:

以3個圓盤為例子:

#includeint i=0;

void hanoi(int n,char x,char y,char z)

hanoi(n-1,x,z,y);

printf("%c ------> %c\n",x,z);

i++;

hanoi(n-1,y,x,z);

}int main()

分享一下資料結構的資源:

棧的應用 漢諾塔

2014年4月23日 漢諾塔 include brief 把第n個盤子從位置a移動到位置b param n 盤子的編號 param a 源位置 param b 目標位置 return void move int n,char a,char b brief 漢諾塔 param n 盤子的個數 para...

漢諾塔遊戲

漢諾塔 於印度傳說的乙個故事,上帝創造世界時作了三根金剛石柱子,在一根柱子上從下往上按大小順序摞著64片 圓盤。上帝命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一回只能移動乙個圓盤。要想玩轉漢諾塔,需要先理解遞迴。如果乙個問題可以不斷地...

漢諾塔遊戲

題目描述 在a b c三根柱子上,有n個不同大小的圓盤 設半徑分別為1 n 一開始他們都疊在a上,你的目標是在最少的合法移動步數內將所有盤子從a塔移動到c塔。遊戲中的每一步規則如下 1 每一步只允許移動乙個盤子 從一根柱子最上方到另乙個柱子的最上方 2 移動的過程中,你必須保證大的盤子不能在小的盤子...