luogu 1096 Hanoi雙塔問題

2021-08-30 13:56:20 字數 1014 閱讀 9390

題目描述

給定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:

【輸入樣例1】

1【輸入樣例2】

2輸出樣例#1:

【輸出樣例1】

2【輸出樣例2】6說明

【限制】

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

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

【提示】

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

跟普通漢諾塔一樣推遞推式就ok啦,f[n]=2*f[n-1]+2,一般學過dp就知道怎麼推的吧

順便複習了下高精

#include#include#include#includeusing namespace std;

int a[2000],n,len,b[2000];

void cheng()

for(int i=1;i<=len;i++)

if(i==len&&a[i+1]!=0)len++; }}

void jia()

if(j==len&&a[j+1]!=0)len++; }}

int main()

int num=len;

while(num)printf("%d",a[num--]);

}

P1096 Hanoi 雙塔問題

原題位址 給定a b c三根足夠長的細柱,在a柱上放有2n個中間有孔的圓盤,共有n個不同的尺寸,每個尺寸都有兩個相同的圓盤,注意這兩個圓盤是不加區分的 下圖為n 3的情形 現要將這些圓盤移到cc柱上,在移動過程中可放在bb柱上暫存。要求 1 每次只能移動乙個圓盤 2 a b c三根細柱上的圓盤都要保...

洛谷 P1096 Hanoi雙塔問題

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

高精度 P1096 Hanoi 雙塔問題

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