问题描述:给定n种商品和一个给定固定容量的背包。物品 i 的重量是W[ i ],价值为V[ i ],背包的容量为C。问应当如何选择装入背包中的物品,使得装入背包中的物品的总价值最大?
(对于同一个物品,要么放,要么不放,不能把物品放入背包多次,也不能将物品分割后部分装入,因此该问题称为 0 - 1背包问题)
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int tableTwo[10][100];
int flag[10] = {
-1 };
//从n->1计算 。自底向上,自左向右
int KnapsackTwo(vector<int> v, vector<int> w, int c, int n) {
int jMax = min(w[n] - 1, c);
for (int j = 0; j<jMax; j++)
tableTwo[n][j] = 0; //j<当前背包容量或者当前物品重量时,tableTwo[n][j]=0;
for (int j = w[n]; j <= c