背包问题
N – 物品数目, W – 物品重量 V – 物品价值
M – 背包容量
dp[i][j] – 容量为j的背包,在前i个物品中装,最多能装多少价值
// dp[i][j] dp[i - 1][j], dp[i - 1][j -w[i]] + v[i]
for(int i = 0; i < N; i++) {
for(int j = 0; j <= M; j++) {
if(i == 0) {
if(w[i] <= j) {
dp[i][j] = v[i];
}
}
if(j - w[i] >= 0 && i - 1 >= 0) {
dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j -w[i]] + v[i]);
}
else if(i - 1 >= 0) { // 或许应该是j - w[i] ?
dp[i][j] = dp[i - 1][j];
}
}
}