HDU-4489王の浮き沈み

王の浮き沈み

  王はすべての異なる高さのガードを持っています。むしろ高順位を増減でそれらを並べるよりも、彼はそれらをラインアップしたいので、各ガードは、彼の隣に警備員よりも短いか、彼の隣に警備員よりも背が高いのいずれかである(その高さが上がるとダウンラインに沿って) 。例えば、高さ160、162、164、166、168、170および172 cmで7つのガード。配置することができます。  

多分: 


王は彼が、彼は彼の治世の残りのためのガードの各変化でアップ異なるとダウン順序を持つことができる必要がありますどのように多くの警備員知りたいです。これを行うことができるようにするには、彼はそこにあるどのように多くの異なるアップとダウンの受注、警備員の一定数について知る必要があり、nは 

4つのガードがある場合たとえば、:1、2、3,4のように手配することができます: 

1324、2143、3142、2314、3412、4231、4132、2413、3241、1423年 

にこの問題のために、あなたが入力として正の整数n、警備員の数を取り、上下の数を返すプログラムを書きます異なる高さのn個のガードの受注。 

入力

入力の最初の行は、以下のデータセットの数であり、単一の整数P(1 <= P <= 1000)、含まれています。各データセットは2つの整数を含む入力単一の行から成ります。最初の整数は、Dは、データセットの数です。第2の整数、nは(1 <= N <= 20)は、異なる高さのガードの数です。 

出力

各データの出力の一行がある設定。これは、アップおよびnガードの注文下の数字が続く単一スペースに続くデータセット数(D)を含有します。 

サンプル入力

4

1 1

2 3

3 4

4 20

サンプル出力

1 1

2 4

3 10

4 740742376475050

トピック効果:高さは、あなたの兵士の異なるセットを与える高および低レベルまたは高レベルの方法の低レベルのレベルに応じて行であなたを聞かせて、このグループ構成の数を出力します。

問題解決のアイデア:

あなたは、トピックを追加して、モード番号を押すnはフロントがn 1個を追加した間、あなたが持つことができるn個の位置が挿入されると

              1,234,567は、追加のn = 8

           01234567 8 8箇所に挿入することができます

n個の追加が最大になるので、>高 - 低> - - N - 低我々はn個挿入すると、その高いフロントを満たす必要があります。

我々は次に総数Iに挿入されたi番目の位置を取る場合、このiはC数を有することになる[N-1] [i]はI以前の位置の前に、すなわち、過去数N 1-iの数を取ることができますモード番号(順列)。

Iは、記録レベルの前の数がDPに配置されている[I] [0]、低高配置されている[I] [1]、[I] / 2 2つの対称和に等しいと同じであることを見出しました。

あなたは式を得ることができます

ACコード:

コードの表示

 

おすすめ

転載: www.cnblogs.com/meanttobe/p/11267434.html