1. 漢諾塔來源及應用
相傳在古印度圣廟中,有一種被稱為漢諾塔(Hanoi)的游戲,該游戲是在一塊銅板裝置上,有三根桿(編號A、B、C),在A桿自下而上、由大到小按順序放置64個金盤(如下圖),游戲的目標:把A桿上的金盤全部移到C桿上,并仍保持原有順序疊好,操作規則:每次只能移動一個盤子,并且在移動程序中三根桿上都始終保持大盤在下,小盤在上,操作程序中盤子可以置于A、B、C任一桿上,

2. 漢諾塔游戲規則
有三根桿子A,B,C,A桿上有N個(N>1)穿孔圓盤,盤的尺寸由下到上依次變小,要求按下列規則將所有圓盤移至C桿:
(1)每次只能移動一個圓盤;
(2)大盤不能疊在小盤上面,
3. 漢諾塔演算法分析
## 演算法分析:
n為圓盤的數量,A,B,C為所給的柱子
當n=1時,只需把盤子移動a–>c即可
move(A,C);
當n>1時,
第一次移動,要把A柱子上的前n-1個移動到B柱子上;(圖1)
hanoi(n-1,A,C,B);

第二次移動,直接把A柱子上的最后一個移動到C柱子上;(圖2)
move(A,C);

第三次移動,把B柱子上的n-1個柱子通過柱子A移動到柱子C上,(圖3)
hanoi(n-1,A,B,C);

演算法總述:

hanoi函式的實作:

move函式的實作//列印移動的軌跡:

c語言代碼實作如下:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255610.html
標籤:其他
上一篇:第八屆“圖靈杯”NEUQ-ACM程式設計競賽個人賽(同步賽)(部分)
下一篇:Canvas 渲染優化策略
