ハノイタイトル4カラム

トピックスアドレス

クラシック再帰の問題。

解決N(1 <= N <= 12) プレート\(4 \)ハノイタワー(ハノイのタワー)に必要なステップの最小数を発行?(1-12各回答は1行を占めました)

問題の解決策

ハノイ元の問題は、\(D [i]が\)カラム3を表す\(Iは\)プレートのステップの最小数。あなたは言葉を忘れていない場合:

\ [D [I] = D [I-1] * 2 + 1 \]

この式は、まだ非常に明白です。

我々は、セット\を(F [I] \)カラム4を表し\(Iは\)プレートのステップの最小数。次にあります。

\ [F [I] = \テキスト{分} \ {F [j] * 2 + D [IJ] \}(1 <= jの<= I)\]

その後、我々は、この式近いカンカンを取る([J] \ F)\を指す(jは\)\に配置されたプレート(\ \のB)上のすべての3つの塔使用塔に、皿の残りの\を( D \)カラムで、次に\(Bの\)カラム上で\(J \)プレート上で\()Dの\の塔。

コード

#include<bits/stdc++.h>
#define N 15
using namespace std;
int n;
int f[N],d[N];
int main()
{
    memset(f,0x3f,sizeof(f));
    d[1] = f[1] = 1; puts("1");
    for(int i=2;i<=12;++i) {
        d[i] = d[i-1]*2 + 1;
        for(int j=1;j<=i;++j) {
            f[i] = min(f[i],f[j]*2+d[i-j]);
        }
        printf("%d\n",f[i]);
    }
    return 0;
}

あなたが理解すれば、我々は考えることができます(nは\)\プレート\(m個\)タワーに近づきます。

我々はセット([I] [J fは\を \]) である(iは\)\、塔\(J \)ステップの最小数をプレートし、以下のとおりです。

\ [F [I] [J] = \テキスト分{} \ {F [i]が[K] * 2 + F [I-1] [JK] \} \]

実際には、原理は同じです。

おやすみなさい、よく眠ります!

おすすめ

転載: www.cnblogs.com/BaseAI/p/11410041.html