漢諾雙塔問題python Hanoi雙塔問題

2021-10-13 02:28:59 字數 1176 閱讀 1721

hanoi

雙塔問題

(hanoi.pas/c/cpp)

【問題描述】給定a

bc三根足夠長的細柱,在

a柱上放有

2n個中間有孔的圓盤,共有

n個不同的尺

寸,每個尺寸都有兩個相同的圓盤,注意這兩個圓盤足不加區分的

下圖為n=3

的情形。現要將

這些圓盤移到

c柱上,在移動過程中可放在

b柱上暫存。要求:

(1)每次只能移動乙個圓盤;

(2)abc

三根細柱上的圓盤都要保持上小下大的順序;

任務:設an為

2n個圓盤完成上述任務所需的最少移動次數,對於輸入的

n,輸出

an【輸入】

輸入檔案

hanoi.in

為乙個正整數

n,表示在

a柱上放有

2n個圓盤。

【輸出】

輸出檔案

hanoi.out

僅一行,包含乙個正整數,為完成上述任務所需的最少移動次數

an【輸入輸出樣例

hanoi.in hanoi.out

1 2【輸入輸出樣例

hanoi.in hanoi.out

2 6【限制】

對於%的資料,

1<=n<=25

對於%的資料,

l<=n<=200

【提示】

設法建立an與

an-1

的遞推關係式。

【試題分析】

不難發現:

an=2an-1+2

(特別的,

a1=2

證明如下:要將a

柱上的2n

個盤子移到

c柱上,

最佳的策略就是先將

(2n-2)

個盤子借助

c柱移到

b柱上,

所需的次數

為an-1

,再將a

柱上最大的兩個盤子直接移到

c柱上,所需的次數為

,最後將

b柱上的

(2n-2)

個盤子借助a

柱移到c

柱上,所需的次數為

an-1

。總次數

an=an-1+2+an-1=an=2an-1+2

漢諾雙塔問題python Hanoi漢諾雙塔問題

hanoi漢諾雙塔問題 題目描述 給定a,b,c三根足夠長的細柱,在a柱上放有2n個中間有孔的圓盤,共有n個不同的尺寸,每個尺寸都有兩個相同的圓盤,注意這兩個圓盤是不加區分的。現要將這些圓盤移到c柱上,在移動過程中可放在b柱上暫存。要求 1 每次只能移動乙個圓盤 2 a b c三根細柱上的圓盤都要保...

漢諾雙塔問題python Hanoi漢諾雙塔問題

hanoi漢諾雙塔問題 題目描述 給定a,b,c三根足夠長的細柱,在a柱上放有2n個中間有孔的圓盤,共有n個不同的尺寸,每個尺寸都有兩個相同的圓盤,注意這兩個圓盤是不加區分的。現要將這些圓盤移到c柱上,在移動過程中可放在b柱上暫存。要求 1 每次只能移動乙個圓盤 2 a b c三根細柱上的圓盤都要保...

漢諾雙塔 (高精度)

由普通漢諾塔問題,設數量為n時移動次數為a n 則a n a n 1 1 a n 1 2 a n 1 1.因為a 1 1,所以a n 2 n 1.找規律?故雙塔就是2 2 n 1 但這裡沒用到 因為資料忒大,所以得用高精度。這裡參考了別人的 思路就是用陣列來儲存每一位數。1 include2 inc...