漢諾塔問題(遞迴)

2021-08-09 03:41:06 字數 541 閱讀 3478

題目描述

對於傳統的漢諾塔遊戲我們做乙個拓展,我們有從大到小放置的n個圓盤,開始時所有圓盤都放在左邊的柱子上,按照漢諾塔遊戲的要求我們要把所有的圓盤都移到右邊的柱子上,請實現乙個函式列印最優移動軌跡。

給定乙個int n,表示有n個圓盤。請返回乙個string陣列,其中的元素依次為每次移動的描述。描述格式為: move from [left/mid/right] to [left/mid/right]。

思路:這個遞迴,個人覺得僅次於分蘋果,不好想。核心,一定要抓住,就是當把一堆盤子(可以看成最下頭的乙個盤子,和最下頭上方的其他盤子)從一端轉移到另一端時候,需要把其他盤子轉移到第三個端上(這裡還要遞迴分解!方法依舊是從一端到一端,借助另外一端的模式),然後把最後乙個,從一端轉移到目標段,再借助空出的原始端,把第三端的盤子,挪到目標端上。說的有點亂,大家見諒下 。

**如下:

class hanoi 

}public:

vector

getsolution(int n)

};

漢諾塔問題(遞迴)

問題 漢諾塔問題 解法 遞迴求解 思路 先把n 1從a移動b 在把第n個從a移到c 使用遞迴使得 變得簡單 複雜度 2的n次方 1 includeint step 1 void hanoi int level,char a,char b,char c 1 當盤子數大於1時,先把n 1個從a借助c移動...

漢諾塔問題(遞迴)

漢諾塔 在印度,有這麼乙個古老的傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,有三根柱子。印度教的主神梵天在創造世界的時候,在其中一根柱子上從下到上地穿好了由大到小的64片金盤,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶在按照下面的法則移動這些金盤 一次只移動一片,不管在哪根柱子上,小片必須在...

漢諾塔問題 遞迴

漢諾塔問題是乙個經典的問題。漢諾塔 hanoi tower 又稱河內塔,源於印度乙個古老傳說。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,任何時候,在小圓盤上都不能放大圓盤,且在...