羅区P1510兆銘

問題解決のジャンプ意味をヒット

ソリューション:シンプルな01バックパック、物理的な時間を過ごすために求めていることはVであるときを想像し、変更について少し考え方を入れて、ほとんどのロックバンドのボリュームはどのくらいです。

DPは[VMAX]東海、無溶液、残りの体積に達していない場合はそうでなければ、ループは最小限の物理的消費を検索します。

1の#include <cstdioを>
 2の#include <iostreamの>
 3の#include <CStringの>
 4の#include <アルゴリズム>
 5  の#define MAXN 10005
 6  
7  使って 名前空間STD。
8  
9  int型DP [MAXN]、[MAXN] W [MAXN] C。
10  int型VSEA、VMAX、N。
11  
12  のint main()の
 13  {
 14      のscanf(" %D%D%D "、&​​VSEA、&N、&VMAX)。
15      のためにint型 I = 1を iが++; iが<= N 16         scanf関数(" %D%dの"、&​​C [i]は、&W [I])。
17      のためには、int型 i = 1 ; iは<; I ++ N = 18          のためのINT V = Vmaxに; V> v-- = [I] W 19              、DP [V] = MAX(DP [V]、DP [ VW [I] + C [I])。
20      であれば(DP [VMAX] < VSEA) 
 21      {
 22          のprintf(" 不可" )。
23          リターン 0 ;
24      } 
 25      のためにINT I = 1; I <= VMAX; iは++ 26          であれば(DP [I]> = VSEA) 
 27          {
 28              のprintf(" %dの"、vmax- I)。
29              リターン 0 ;
30          }
 31      リターン 0 32 }

 

おすすめ

転載: www.cnblogs.com/Hoyoak/p/11373507.html