01背包:一件【其实就是完全背包当K=1的情况】
完全背包:无数件
多重背包
Tips:
任意一种背包都可以用滚动数组优化
int main()
{
//N*M
for (int i = 1; i <= n; i++) {
for (int j = w[i]; j <= W; j++) {
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i]);
}
}
//利用滚动数组,空间为2m
int cur = 1;
for (int i = 1; i <= n; i++) {
for (int j = w[i]; j <= W; j++) {
dp[cur][j] = max(dp[cur^1][j], dp[cur^1][j - w[i]] + v[i]);
}
cur ^= 1;
}
return 0;
}