奇怪漢諾塔

2021-10-09 03:24:27 字數 679 閱讀 4398

奇怪漢諾塔

題目描述

漢諾塔問題,條件如下:

這裡有 a、b、c 和 d 四座塔。

這裡有 個圓盤, 的數量是恆定的。

每個圓盤的尺寸都不相同。

所有的圓盤在開始時都堆疊在塔 a 上,且圓盤尺寸從塔頂到塔底逐漸增大。

我們需要將所有的圓盤都從塔 a 轉移到塔 d 上。

每次可以移動乙個圓盤,當塔為空塔或者塔頂圓盤尺寸大於被移動圓盤時,可將圓盤移至這座塔上。 請你求出將所有圓盤從塔 a 移動到塔 d,所需的最小移動次數是多少。

輸入格式

沒有輸入。

輸出格式

對於每乙個整數 ,輸出乙個滿足條件的最小移動次數,每個結果佔一行。

思路:先考慮三個塔我們設的d(i)表示i個盤子3個塔最優步數,i-1個盤子移到b柱,最優步驟d(i-1),把a柱剩餘移到c柱,步數為1,最後把b柱n-1個盤子移到c,最優步驟為d(i-1)故有遞推公式d(n)=2*d(i-1)+1.

本題我們設f[i]表示i個盤子4座塔的最優步數,a->b,最優發f[j],再將i-j個盤子移動到d柱上,考慮b柱有盤子,故在3塔模式下最優步數d(i-j),再將j個盤子移動到d柱上,最優步數也為f[j].考慮所有j,故有f[i] = min(f[i], 2 * f[j]+d[i-j]);

#include

奇怪的漢諾塔

漢諾塔問題,條件如下 1 這裡有a b c和d四座塔。2 這裡有n個圓盤,n的數量是恆定的。3 每個圓盤的尺寸都不相同。4 所有的圓盤在開始時都堆疊在塔a上,且圓盤尺寸從塔頂到塔底逐漸增大。5 我們需要將所有的圓盤都從塔a轉移到塔d上。6 每次可以移動乙個圓盤,當塔為空塔或者塔頂圓盤尺寸大於被移動圓...

奇怪的漢諾塔

本題是三盤漢諾塔的延伸。三盤漢諾塔我們是可以用遞推來求解的。設dp n 表示求解該n盤3塔問題的最少步數,顯然有dp n 2 dp n 1 1,既把前n 1個盤子從a柱移動b柱,在把第n個盤子從a柱移動 柱,最後又把前n 1個盤子從b柱移動到c柱。這是三塔的遞推式。那麼四塔的遞推式就是把前i個盤子移...

奇怪的漢諾塔

漢諾塔問題,條件如下 1 這裡有 a b c 和 d 四座塔。2 這裡有 n 個圓盤,n 的數量是恆定的。3 每個圓盤的尺寸都不相同。4 所有的圓盤在開始時都堆疊在塔 a 上,且圓盤尺寸從塔頂到塔底逐漸增大。5 我們需要將所有的圓盤都從塔 a 轉移到塔 d 上。6 每次可以移動乙個圓盤,當塔為空塔或...