01ナップザック問題
DFSソリューション
1の#include <iostreamの> 2の#include <CStringの> 3の#include <アルゴリズム> 4の#include <cmath> 5 6 使用して 名前空間STDを、 7 8 CONST INT = N 1010 。 9 10 のint V [N] W [N]、。 11 INT N、V。 12 INT ANS = 0 。 13の 14 空隙 DFS(int型 IDX、int型 H、INT M){ 15 であれば(IDX == N){ 16 リターン; 17 } 18である DFS(+ IDX 。1 、H、M); //ない最初の分岐は、現在選択されている項目を表す 。19 IF(H + V [IDX <= V){物品ナップザックよりも電流容量の大きいへ//のみ等しい電流第二のブランチに入る前にボリューム、 20は、 IF(ANS <M + W [IDX]){ 21は ANS = M + W [IDX]; 22である } 23れる DFS(IDX + 1、H + V [IDX]、M + W [IDX] ); 24 } 25 } 26である 27 INT メイン(){ 28 CIN >> N- V; 29 30 のために(INT I = 0; I <N; I ++ ){ 31 CIN >> V [i]は、 32 } 33 のために(INTは iは= 0、I <N; I ++ ){ 34 CIN >> [I] W。 35 } 36の 37 DFS(0、0、0 ); 38の 39 COUT << ANS << ENDL。 40 41 戻り 0 ; 42 }
...