让背包里面的物品总价值最大
-
const int N = 100, W = 100000;
-
int cost[N], weight[N];
-
int c [W + 1]; // 只需要一条数组就够了
-
void knapsack(int n, int w)
-
{
-
memset(c, 0, sizeof(c));
-
for (int i = 0; i < n; ++i)
-
for (int j = w; j - weight [i] >= 0; --j) // 由后往前
-
c[j] = max(c[j], c[j - weight[i]] + cost[i]);
-
cout << "最高的价值为" << c [w];
-
}