問題由來
在世界中心貝拿勒斯(在印度北部)的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶在按照下面的法則移動這些金片:一次只移動一片,不管在哪根針上,小片必須在大片上面。僧侶們預言,當所有的金片都從梵天穿好的那根針上移到另外一根針上時,世界就將在一聲霹靂中消滅,而梵塔、廟宇和眾生也都將同歸於盡。
分析
//先將三根寶石針分為a(起始位置),b(中間位置),c(目標位置)
對於這個問題,我們先不考慮小金片如何移動,而是想要把最下面的金片從a移動到c時所必須滿足的狀態。此時一定會出現下面這種狀態,即a中只剩下乙個最大的金片,b中有n-1個金片;c中沒有任何金片。這樣,n個金片的移動問題變為將n-1個金片從a移動到b,然後將a中剩下的最大金片移動到c。最大乙個金片移動好後,問題變為將n-1個金片從b移動到c了。依此類推,直到完成所有移動為止。
#include
using
namespace
std;
int i; //定義全域性變數,盤子移動的次數
//第乙個塔為初始塔,中間的塔為借用塔,最後乙個塔為目標塔
經典遞迴問題 漢諾塔
漢諾塔 漢諾塔問題第一次接觸時就感覺非常有趣,但是由於當時知識有限不能深刻地理解遞迴的含義,所以沒能繼續深究,現在來談一談吧。題目描述 漢諾塔 於印度傳說的乙個故事,上帝創造世界時作了三根金剛石柱子,在一根柱子上從上往下從小到大順序摞著64片 圓盤。上帝命令婆羅門把圓盤從下面開始按大小順序重新擺放在...
經典問題 漢諾塔(遞迴)
c 如下 法國數學家愛德華 盧卡斯曾編寫過乙個印度的古老傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶在按照下面的法則移動這些金片 一次只...
經典遞迴 漢諾塔問題
有三個柱子,三個盤子都在第乙個柱子上,現在要移到第三個柱子上,要求移動過程中盤子相對位置不變,小的還是在上,大的在下。思路 分兩步 1.將n 1個盤從乙個柱子移到另乙個柱子 借助另外乙個柱子 n 1 2.將1個盤子從乙個柱子移到另乙個柱子 用3個柱子移動n 1個盤子,目的 把所有盤子從x移到z vo...