DP | Luogu P1466コレクションのサブセット和

質問は、表面:P1466コレクションのサブセットの和を

ソリューション:

DP
SUM = N *(N + 1)/ 2は、
宇宙プログラムの数の和/ 2を満たすのに必要な数から選択した番号へのモデル、バックパックそれは
応答がない場合、それは見かけの合計%2 = 0!レイアウト判断
F. [i] [j]が前面に番号iを示し、jに対するプログラム番号
F. [0] [0] = 1;
F. [i]は[J] + = F. [JI [1-I] (J> = I)
への変換
(INT I = 1; Iは<= N; I ++)用の
ための(INT J = SUM / 2; J> = I; J)
F. [J] + = F. [JI ];
答えはFである[合計/ 2] / 2 、 要求の本当の主題はまあ分割することであるので、あなたは、再びあなたはもちろんおよびBを入れて選出されたことを書くには、/ 2アップを入れています。
とにかく、これは

コード:

1の#include <cstdioを>
 2  の#define長い長い年
 3  使用 NamespaceZのSTDを。
4  CONST  INT MAXN = 45 = MAXN *(1 + MAXN)/ 2 5  int型Nロール週間。
6 / II F [ 2 ]。
8、7  INT メイン(){
      scanf関数(" %のD "、&N)。
9      和= N *(N + 1)/ 2 もし10和(の%2 ){
 11              printf(" 0 \ N " );
12          リターン 0 ;
13      }
 14      HF =和/ 2 15      F [ 0 ] = 1 16      のためにint型 i = 1 ; iが<= Nを; iが++ 17          のためのINT J = HF; J> = I; j-- 18              F [J] + = F [J- I];
19      のprintf(" %LLDする\ n "、F [HF] / 2 )。
20      リターン 0 ;
21 }
コードの表示

 


で:AlenaNuna

 

おすすめ

転載: www.cnblogs.com/AlenaNuna/p/11590537.html