本題是三盤漢諾塔的延伸。三盤漢諾塔我們是可以用遞推來求解的。
設dp[n]表示求解該n盤3塔問題的最少步數,顯然有dp[n] = 2 * dp[n - 1] + 1,既把前n-1個盤子從a柱移動b柱,在把第n個盤子從a柱移動c柱,最後又把前n-1個盤子從b柱移動到c柱。這是三塔的遞推式。那麼四塔的遞推式就是把前i個盤子移動到b或者c上(四柱移動)。然後把剩下的n-i個盤子移動到d塔上(三柱移動)。
#include"stdio.h"
#include"string.h"
#include"algorithm"
using namespace std;
int dp[21],f[21];
int main()
for(int i = 1; i <= 12; i ++)
printf("%d\n",f[i]);
}
奇怪漢諾塔
奇怪漢諾塔 題目描述 漢諾塔問題,條件如下 這裡有 a b c 和 d 四座塔。這裡有 個圓盤,的數量是恆定的。每個圓盤的尺寸都不相同。所有的圓盤在開始時都堆疊在塔 a 上,且圓盤尺寸從塔頂到塔底逐漸增大。我們需要將所有的圓盤都從塔 a 轉移到塔 d 上。每次可以移動乙個圓盤,當塔為空塔或者塔頂圓盤...
奇怪的漢諾塔
漢諾塔問題,條件如下 1 這裡有a b c和d四座塔。2 這裡有n個圓盤,n的數量是恆定的。3 每個圓盤的尺寸都不相同。4 所有的圓盤在開始時都堆疊在塔a上,且圓盤尺寸從塔頂到塔底逐漸增大。5 我們需要將所有的圓盤都從塔a轉移到塔d上。6 每次可以移動乙個圓盤,當塔為空塔或者塔頂圓盤尺寸大於被移動圓...
奇怪的漢諾塔
漢諾塔問題,條件如下 1 這裡有 a b c 和 d 四座塔。2 這裡有 n 個圓盤,n 的數量是恆定的。3 每個圓盤的尺寸都不相同。4 所有的圓盤在開始時都堆疊在塔 a 上,且圓盤尺寸從塔頂到塔底逐漸增大。5 我們需要將所有的圓盤都從塔 a 轉移到塔 d 上。6 每次可以移動乙個圓盤,當塔為空塔或...