ソリューション:単純な二次元コストのバックパック
1の#include <cstdioを> 2の#include <iostreamの> 3の#include <CStringの> 4の#include <アルゴリズム> 5 6 使用して 名前空間STD。 7 8 int型 DP [ 205 ] [ 205 ]、W [ 205 ]、T [ 205 ]。 9 int型N、TMAX、VMAX。 10 11 のint main()の 12 { 13 のscanf(" %D%D%D "、&N、&VMAX、&TMAX)。 14 のために(INT I = 1; iが<= N; iは++ ) 15 のscanf(" %d個の%のD "、&W [i]は、&T [I])。 16 のためには、(int型 i = 1 ; iは<; I ++ N = ) 17 のための(INT V = Vmaxに、V> = W [i]は、v-- ) 18 のための(INT J = TMAX; J> = T [i]は; j-- ) 19 DP [V] [j]はMAX(DP [V]、[J]、DP [VWを[I] [JT [I] + = 1 )。 20 のprintf(" %d個の\ n " 、DP [VMAX] [TMAX])。 21 リターン 0 。 22 }