Vijos P1354 Hanoi雙塔問題

2021-07-22 02:31:13 字數 541 閱讀 3250



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

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

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

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

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

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

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

**#include #include using namespace std;

int n,c,a[22],i,j;

int main()

} i=20;

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

i--;

cout<

vijos P1354 Hanoi雙塔問題

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

雙色Hanoi塔問題

設a,b,c是3個塔座。開始時,在塔座a上有一疊共n個圓盤,這些圓盤自下而上,由大到小地疊在一起。各圓盤從小到大編號為1,2,n,奇數號圓盤著藍色,偶數號圓盤著紅色。現要求將塔座a上的這一疊圓盤移到塔座b上,並仍按同樣順序疊置。在移動圓盤時應遵守以下移動規則 規則 1 每次只能移動1個圓盤 規則 2...

雙色Hanoi塔問題

雙色hanoi塔問題 問題描述 設a b c是3 個塔座。開始時,在塔座a 上有一疊共n 個圓盤,這些圓盤自下而上,由大到小地疊在一起。各圓盤從小到大編號為1,2,n,奇數號圓盤著藍色,偶數號圓盤著紅色,如圖所示。現要求將塔座a 上的這一疊圓盤移到塔座b 上,並仍按同樣順序疊置。在移動圓盤時應遵守以...