description
漢諾塔(又稱河內塔)問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片**圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。三根柱子分別標為a, b, c,所有圓盤最初都放在柱子a上,要求最後都放在柱子c上,借助柱子b.
input
多組測試,輸入圓盤數n( 1 <= n <= 10)
output
按照示例輸出搬盤子的過程,每次搬動輸出一行
sample input
2sample output
a->b
a->c
b->c
hint
三根柱子分別標為a b c
將大問題化成小問題。
首先找到遞迴通式
對於將n個圓盤從a搬到c(以b為過渡),可以轉化為將n-1個圓盤從a搬到b(以c為過渡),再將第n個圓盤從a搬到c,再將n-1個圓盤從b搬到c(以a為過渡)。
現在,我們還需要找遞推出口(即遞迴的終點或者理解為開始往上層函式走的起點)
當只有乙個盤子時,我們a搬到c(注意 這裡的a與c不是a柱子和c柱子,而是起始柱子到終點柱子)
#include.h>
using namespace std;
void
hnt(int n, char a
, char b
, char c
)else
}int main
(void
)return0;
}
遞迴演算法之漢諾塔
遞迴定義 遞迴演算法是把問題轉化為規模縮小了的同類問題的子問題。然後 遞迴呼叫函式 或過程 來表示問題的解。乙個過程 或函式 直接或間接呼叫自己本身,這種過程 或函式 叫遞迴過程 或函式 遞迴演算法解決問題的特點 1 遞迴就是在過程或函式裡呼叫自身。2 在使用遞迴策略時,必須有乙個明確的遞迴結束條件...
漢諾塔 遞迴演算法
個人覺得漢諾塔這個遞迴演算法比電子老鼠的難了一些,不過一旦理解了也還是可以的,其實網上也有很多 可以直接參考。記得大一開始時就做過漢諾塔的習題,但是那時 寫得很長很長,也是不理解遞迴的結果。現在想起來漢諾塔的演算法就3個步驟 第一,把a上的n 1個盤通過c移動到b。第二,把a上的最下面的盤移到c。第...
漢諾塔遞迴演算法
大學的時候專業課程很差,指導大二學習演算法設計的時候,發現專業課裡比較有趣的一門。專心學習了一學期 最近在學習python發現了乙個遞迴演算法很迷茫,遂研究了一下。簡單來說明一下 首先漢諾塔的規則是1 每次移動一塊 2 小木塊只能放在大木塊上 3 將所有木塊從a柱子移動c柱子木塊上 用幾個變數和常量...