定义
dp[j]是从物品0到i中挑选物品,放进容量为j的背包中的最大价值总和。
初始化
int dp[maxn];
memset(dp, sizeof(dp), -0x3f3f3f3f);
一维滚动数组法
for(int i = 0; i < weight.size(); i++)for(int j = bag_size; j >= 0; j--){if(j < weight[i])dp[j] = dp[j-1];else dp[j] = max(dp[j], dp[j-weight[i]]+values[i]);}
输出
return dp[bag_size]