定义
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]