高精度 P1096 Hanoi 雙塔問題

2022-09-09 05:15:11 字數 1557 閱讀 9952

題目描述

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

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

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

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

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

輸入格式

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

輸出格式

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

輸入輸出樣例

輸入 #1

【輸入樣例1】

1【輸入樣例2】

2輸出 #1

【輸出樣例1】

2【輸出樣例2】

6說明/提示

【限制】

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

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

題目解析

這個蒟蒻很懶,沒有寫題解

雙塔和單塔不同的是:雙塔的步數是單塔的2倍(肯定的)。

所以只要乙個過程就行了。

我們看完題目,不難得出:總數量=2*n;

步數=(n-1塊圓盤的步數)*2

可以用階乘做。

ac完整程式

#include

#include

#include

using

namespace std;

void

input()

;void

add();

void

mul();

void

work()

;void

output()

;const

int maxx=

1000

;int n,a[maxx]

;int

main()

void

input()

void

work()

}void

output()

else

if(f)

printf

("%d"

,a[i]);

}}void

add()}

void

mul(

)for

(int i=maxx-

1;i>

0;i--

)}

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三根細柱上的圓盤都要保持上小下大的順...

高精度之Hanoi雙塔問題

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