Hanoi雙塔問題(遞推)

2021-08-29 02:04:14 字數 957 閱讀 4814

時間限制: 1 sec  記憶體限制: 128 mb

提交: 10  解決: 4

[提交][狀態][討論版][命題人:外部匯入]

給定a,b,c三根足夠長的細柱,在a柱上放有2n個中間有空的圓盤,共有n個不同的尺寸,每個尺寸都有兩個相同的圓盤,注意這兩個圓盤是不加區分的(下圖為n=3的情形)。現要將 這些國盤移到c柱上,在移動過程中可放在b柱上暫存。要求:

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

(2) a、b、c三根細柱上的圓盤都要保持上小下大的順序;

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

輸入檔案hanoi.in為乙個正整數n,表示在a柱上放有2n個圓盤。

輸出檔案hanoi.out僅一行,包含乙個正整數,為完成上述任務所需的最少移動次數an。

1

2

對於50%的資料, 1<=n<=25

對於100% 資料, 1<=n<=200

設法建立an與an-1的遞推關係式。

通過手推的方式可以發現轉移方程f[i]=2*f[i-1]+2,由於n<=200,所以要用高精

#include #include 

using

namespace

std;

int n,c,a[22

],i,j;

intmain()

}

i=20

;

while(i>1&&!a[i])

i--;

cout

printf(

"%04d

",a[i]);

cout

0;

}

Hanoi 雙塔問題

operatorname luogup 1096 給定 a aa b bb c cc 三根足夠長的細柱,在 a aa 柱上放有 2n2n 2n個中間有孔的圓盤,共有 n nn 個不同的尺寸,每個尺寸都有兩個相同的圓盤,注意這兩個圓盤是不加區分的 下圖為 n 3 n 3n 3 的情形 現要將這些圓盤移...

題解 Hanoi 雙塔問題

給定 a b c 三根足夠長的細柱,在 a 柱上放有 2n 個中間有孔的圓盤,共有 n 個不同的尺寸,每個尺寸都有兩個相同的圓盤,注意這兩個圓盤是不加區分的。現要將這些圓盤移到 c 柱上,在移動過程中可放在 b 柱上暫存。要求 每次只能移動乙個圓盤 a b c 三根細柱上的圓盤都要保持上小下大的順序...

vijos P1354 Hanoi雙塔問題

題意 求n個碟子在三柱漢諾塔上的移動次數。思路 公式 移動次數 2 碟子數 1 注意點 n在1 200範圍內,用大數問題處理。以下為ac 評測狀態 accepted 題目p1354 hanoi雙塔問題 遞交時間 2014 11 07 12 58 47 語言 c 評測機 上海紅茶館 消耗時間 45 m...