題目描述
給定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三根細柱上的圓盤都要保持上小下大...