想法:
1~n從a移動到b,c為輔助
等價於:
1) 1~n-1從a移動到c,b為輔助
2) 把n從a移動到b
3) 1~n-1從c移動到b,a為輔助
然後依次迴圈 1-2-3
#include
#include
using
namespace std;
//n 盤子數量 from原始柱子 to目標柱子 help 輔助柱子
void
hannoitower
(int n, string from,string to, string help)
hannoitower
(n-1
,from,help,to)
;//先把n-1放到輔助柱子上
cout <<
" move "
<< n <<
" from "
<< from <<
" to "
<< to << endl;
hannoitower
(n-1
,help,to,from)
;//讓n-1從輔助空間回到原柱子上
}int
main()
演算法筆記 遞迴 漢諾塔問題
演算法 當只有乙個盤子的時候,只需要從將a塔上的乙個盤子移到c塔上。當a塔上有兩個盤子是,先將a塔上的1號盤子 編號從上到下 移動到b塔上,再將a塔上的2號盤子移動的c塔上,最後將b塔上的小盤子移動到c塔上。當a塔上有3個盤子時,先將a塔上編號1至2的盤子 共2個 移動到b塔上 需借助c塔 然後將a...
用遞迴演算法求解漢諾塔問題
檔名稱 test3.1.cpp 完成日期 2016年09月08日 版本號 v1.0 問題描述 用遞迴演算法求解漢諾塔問題,其複雜度可以求得為o 2 n 是指數級的演算法 不同盤子所消耗的時間 輸入描述 無 程式輸出 演算法的執行時間 include define disccount 4 改變disc...
遞迴演算法 漢諾塔問題
圖1 漢諾塔分析 三個過程 漢諾塔問題,經典遞迴問題 遞迴問題的關鍵 1.如何縮小問題的規模 2.如何解決最簡單問題 即 1找出遞迴體,2找出遞迴出口 試圖追蹤程式執行過程,都是徒勞的 2018年4月10日10 49 46 by 楷諧之力 includevoid move char frm,char...