移動次數2^n-1
hannoni(int n,char a,char b,char c)把n個盤子借助b,從a移動到c
move(int n,char a,char c)把第n個盤子,從a移動到c
#include
#include
using
namespace std;
//漢諾塔問題a--->c
//2^n-1次移動次數
//把第n個盤子從a移動到c
void
move
(int n,
char a,
char c)
//把n個盤子a借助b移到c
void
hannoni
(int n,
char a,
char b,
char c)
}int
main()
要點:a—>c
1.當n==1時直接從a移動到c
2.當n>1時,
先把n-1個盤子借助c,從a移動到b
再把第n個盤子從a移動到c
最後,借助a,把n-1個盤子從b移動到c
要點:a—>c**示例1.當n==1時直接從a移動到c 移動一次
2.當n>1時,
先把n-1個盤子借助c,從a移動到b 移動n-1次
再把第n個盤子從a移動到c 移動一次
最後,借助a,把n-1個盤子從b移動到c 移動n-1次
所以,n=1,t(n)=1
n>1,t(n)=2t(n-1)+1
#include
#include
using
namespace std;
intcount
(int n)
intmain()
漢諾塔問題(遞迴)
題目描述 對於傳統的漢諾塔遊戲我們做乙個拓展,我們有從大到小放置的n個圓盤,開始時所有圓盤都放在左邊的柱子上,按照漢諾塔遊戲的要求我們要把所有的圓盤都移到右邊的柱子上,請實現乙個函式列印最優移動軌跡。給定乙個int n,表示有n個圓盤。請返回乙個string陣列,其中的元素依次為每次移動的描述。描述...
漢諾塔問題(遞迴)
問題 漢諾塔問題 解法 遞迴求解 思路 先把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片金盤,這就是所謂的漢諾塔。不論白天黑夜,總有乙個僧侶在按照下面的法則移動這些金盤 一次只移動一片,不管在哪根柱子上,小片必須在...