漢諾塔演算法

2021-06-03 23:14:28 字數 458 閱讀 8620

最簡步驟:2的n次冪-1

為了實現 n個盤從 借助c 從a 移動到 b

思路如下:

首先考慮極限當只有乙個盤的時候 只要 盤直接從 a -> b即可

那麼當有2個盤的時候就只要先把1號盤從a -> c 然後 把2號盤 a->b 再 把 2好盤從 c - > b

那麼當有n個盤的時候你只要先把 n-1個 盤 借助 b 移動到 c 然後將 n號盤從 a -> b

那麼這時候只要將 n-1想辦法從c移動到 b 借助 a 那麼就可以先把 n-2個盤借助b移動到a

然後 把n-1號盤從c-> b如此遞迴就是了!

#include void mov(int n,char a,char b)

void hanoi(int n,char a,char b,char c)

int main()

漢諾塔演算法

解法 如果柱子標為abc,要由a搬至c,在只有乙個盤子時,就將它直接搬至c,當有兩個盤子,就將b當作輔助柱。如果 盤數超過兩個,將第三個以下的盤子遮起來,就很簡單了,每次處理兩個盤子,也就是 a b,a c,b c這三個 步驟,而被遮住的部分,其實就是進入程式的遞迴處理。事實上,若有n個盤子,則先移...

漢諾塔演算法

乙個印度傳說 在乙個神廟裡有有乙個漢諾塔,就是乙個銅板上插著3個寶石針,其中一根針從上到下的穿著由小到大的銅片64片,僧人們一次只能移動乙個銅片,並且不論移到哪個針上,必須保持小片在大片上面。僧侶們預言,當所有的銅片都從穿好的那根針上移到另外一根針上時,世界就將在一聲霹靂中消亡。當然,這只是個傳說,...

漢諾塔演算法

漢諾塔問題描述 有a,b,c三個圓柱,其中a上從上至下放置了從小到大n個圓盤,一次只能移動乙個圓盤,且大的圓盤不能放在小圓盤之上,要求列印出從a將圓盤移到c的方案。當n 1時,a c 當n 2時,a b,a c,b c 當n 3時,a c,a b,c b,a c,b a,b c,a c 當n 4時,...