0-1背包问题
链接:http://blog.csdn.net/chenxun_2010/article/details/42045065
链接:http://www.cnblogs.com/shinning/p/6027743.html
/*
dp[i][j] 背包总重j时,前i个物品的最大价值
*/
int pakc_0_1(std::vector<int> w, std::vector<int> v, int W){
int num = w.size();
std::vector<std::vector<int>> dp(num + 1, W + 1);
for(int i = 0; i <= num; i++){
dp[i][0] = 0;
}
for(int i = 1; i < num; i++){
for(int j = 1; j <= W; j ++){
if(j >= w[i]){
dp[i][j] = max(dp[i][j - w[i]] + v[i], dp[i - 1][j]);
}else{
dp[i][j] = dp[i -1 ][j];
}
}
}
}