P1096 Hanoi 雙塔問題

2021-10-12 16:39:39 字數 1172 閱讀 2235

原題位址

給定a、b、c三根足夠長的細柱,在a柱上放有2n個中間有孔的圓盤,共有n個不同的尺寸,每個尺寸都有兩個相同的圓盤,注意這兩個圓盤是不加區分的(下圖為n=3的情形)。

現要將這些圓盤移到cc柱上,在移動過程中可放在bb柱上暫存。要求:

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

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

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

輸入格式:

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

輸出格式:

乙個正整數, 為完成上述任務所需的最少移動次數an​。

輸入樣例#1: 

【輸入樣例1】

1【輸入樣例2】

2

輸出樣例#1: 

【輸出樣例1】

2【輸出樣例2】

6

【限制】

對於50%的資料,1≤n≤25

對於100%的資料,1≤n≤200

通過模擬1-5,你可以發現乙個關係式a[i]=(2i-1)*2。

只需要將a陣列求出即可(不需用陣列,直接求a[i])。

資料n很大,去要用高精乘和高精加。

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

while(jw!=0)

}

j=0;

while(true)

if((j=a[0])||(qw=0)) break;

}if(qw!=0)

#include#includeusing namespace std;

int n;

int a[1000];

int jw,qw,j;

int main()

while(jw!=0)

}j=0;

while(true)

if((j=a[0])||(qw=0)) break;

}if(qw!=0)

for(int i=a[0];i>=1;i--)

cout

}

洛谷 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三根細柱上的圓盤都要保持上...

luogu 1096 Hanoi雙塔問題

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