高精度之Hanoi雙塔問題

2021-07-30 08:08:49 字數 1042 閱讀 2137

description

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

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

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

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

input

一組測試資料佔一行,包括乙個正整數n,表示在a柱上放有2n個圓盤。1<=n<=200個正整數n,表示在a柱上放有2n個圓盤。
output

一組測試資料輸出佔一行,包含乙個正整數, 為完成上述任務所需的最少移動次數an。
sample input

1

2

sample output

2

6

思路

n = 1;  需要兩步;

n = 2; 先將最小的兩個移到b,需要兩步,再將最大的兩個移到c;需要兩步,然後將b上面的兩個移到c,需要兩步;總共移到了6步,最小的移到兩次每次需要兩步,最大的需要一次,每次一步,2*2+2;

n >= 3;先將上面的n-1對圓盤移到b上面,然後將最大的一對移到c上面,以此類推,f[n] = 2*f[n-1] + 2;

**

#include

#include

using

namespace

std;

int main()

int len=1;

n--;

while(n--)

a[len]+=x;

if(a[len])

len++;

}for(int i=len-1;i>=0;i--)

cout

0;}

easy高精度 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三根細柱上的圓盤都要保持上...

題解 Hanoi雙塔問題(高精度處理,壓4用20)

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