題解 Hanoi 雙塔問題

2022-02-15 23:12:45 字數 816 閱讀 2305

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

每次只能移動乙個圓盤;

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

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

這個是雙塔,其實和單塔是一樣的(兩個圓盤不加區分,可以疊加,你懂得)

使用公式: \(f[i] = (f[i - 1] + 1) \times 2\) 即可。

另外我們為了簡化**,還可以這樣:

\[f[i] = (f[i - 1] + 1) \times 2 \\ \ \ = f[i - 1] * 2 + 2

\]化簡式子之後就可以乘完再加上,然後統一處理進製。

有點懶,沒用結構體,就讓陣列下標從 \(1\) 開始,然後 \(ans[0]\) 代表位數。

#include using namespace std;

int ans[100001];

int main()

ans[1] += 2;

for (int j = 1; j <= ans[0]; ++j)

if (ans[ans[0] + 1] != 0)

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

}

Hanoi 雙塔問題

operatorname luogup 1096 給定 a aa b bb c cc 三根足夠長的細柱,在 a aa 柱上放有 2n2n 2n個中間有孔的圓盤,共有 n nn 個不同的尺寸,每個尺寸都有兩個相同的圓盤,注意這兩個圓盤是不加區分的 下圖為 n 3 n 3n 3 的情形 現要將這些圓盤移...

Hanoi雙塔問題(遞推)

時間限制 1 sec 記憶體限制 128 mb 提交 10 解決 4 提交 狀態 討論版 命題人 外部匯入 給定a,b,c三根足夠長的細柱,在a柱上放有2n個中間有空的圓盤,共有n個不同的尺寸,每個尺寸都有兩個相同的圓盤,注意這兩個圓盤是不加區分的 下圖為n 3的情形 現要將 這些國盤移到c柱上,在...

vijos P1354 Hanoi雙塔問題

題意 求n個碟子在三柱漢諾塔上的移動次數。思路 公式 移動次數 2 碟子數 1 注意點 n在1 200範圍內,用大數問題處理。以下為ac 評測狀態 accepted 題目p1354 hanoi雙塔問題 遞交時間 2014 11 07 12 58 47 語言 c 評測機 上海紅茶館 消耗時間 45 m...