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;
}