羅区P1566プラス式

トピックポータル

問題解決のアイデア:

実際には、この問題は、01バックパックに見ることができる、すべての項目は、これらの値を識別し、すべてのプログラムの数が正確にバックパックに特定項目の値に等しい特定のアイテムのすべての可能な値で構成することができ、それは01バックパックを実行しました。

ACコード:

1の#include <iostreamの>
 2の#include <cstdioを>
 3の#include <アルゴリズム>
 4の#include <CStringの> 
 5  
6  使用して 名前空間STDを、
7  
8  int型、T、N、[ 31 ]、F [ 1001 ]、ANS、合計。
9  BOOL VIS [ 31 ]。
10  
11  INT メイン(){
 12      のscanf(" %dの"、&T)。
13      のためにINT iは= 1 ; iが<= T; I ++ ){
 14         scanf関数(" %のD "、&N)
15          のmemset(0はsizeof (a)参照)。
16          のmemset(F、0はsizeof (F))。
17の          ANS = 0 18          のためにINT J = 1 ; J <= nであり、j ++ ){
 19              のscanf(" %dの"、&[J])。
20              和= MAX(和、[J])。    
21          }
 22          F [ 0 ] = 1;
23          ソート(+ 1、+ N + 1 )。
24          のためにINT J = 1 ; J <= N; J ++ 25              のためのINT K =和; K> = [J]; k-- 26                  F [K] + = F [K- A [J] ];
27          のためにINT J = 1 ; J <= N; J ++ 28の              ANS + = F [J]。
29          のprintfは(" %D \ n "、ANS - N)。
30      }
 31      リターン 0;
32 }

 

おすすめ

転載: www.cnblogs.com/lipeiyi520/p/12319669.html