1. 將from柱最上面的movesum-1個圓盤移動到by柱(借助to柱)
2. 將from柱上剩下的那1個圓盤直接移動到to柱
3. 將by柱上的movesum-1個圓盤移動到to柱(借助from柱)
int sumofplates = 4;// 總的盤子數目
int sum[3] = ;// 初始時各柱子上盤子數目
enum pillar;// 三個柱子
char name[3] = ;// 對應的柱子名字
void move(int movesum, pillar from, pillar by, pillar to);// 將movesum個盤子從from柱移動到to柱(借助by柱)
void main()
void move(int movesum, pillar from, pillar by, pillar to)
else
}
漢諾塔問題 Hanoi
描述 一 漢諾塔問題 問 如何移?最少要移動多少次?漢諾塔示意圖如下 三個盤的移動 二 故事由來 法國數學家愛德華 盧卡斯曾編寫過乙個印度的古老傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片...
漢諾塔問題 hanoi(遞迴)
漢諾塔問題 hanoi 現有abc三個柱子,a中有n個盤 上小下大 移動到c上,要求全程上小下大 演算法 遞迴,把1 n 1個盤當作乙個整體 include 函式宣告 函式功能 把n個盤 從a 借助b,移到c hanoi int n,char x,char y,char z 函式功能 把乙個盤子x ...
漢諾塔(Hanoi)問題求解
n 階hanoi塔問題 假設有3個分別命名為x y z的塔座,在塔座x上插有n個直徑大小各不相同 依小到大編號為1,2,n的圓盤。現在要求將x軸上的n個圓盤移至塔座z上並仍然按同樣順序疊排,圓盤移動時必須遵循下列規則 1 每次只能移動乙個圓盤 2 圓盤可以插在x y和z中的任一塔座上 3 任何時候都...