0/1背包问题是动态规划中最为经典的题目。
有n个物品,已知各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?
样例输入:
3 8
3 3
5 4
5 5
样例输出:
8
上一篇文章中用了二维数组,比较浪费空间复杂度,这里使用一维数组,思路与上一篇相同。(一维数组只保留最高价值)
由于用了一维数组,所以关键判别式应为
f[j] = max(f[j], f[j - w[i]] + c[i]);
代码如下:
#include <bits/stdc++.h>
using namespace std;
int w[1001],c