function bagProblem(weight, value, bagWeight) {
let dp = new Array(weight.length + 1).fill(0).map(() => new Array(bagWeight + 1).fill(0));
for (let j = bagWeight; j >= weight[0]; j--) {
dp[0][j] = dp[0][j - weight[0]] + value[0];
}
for (let i = 0; i < weight.length; i++) {
for (let j = 0; j <= bagWeight; j++) {
if (j < weight[i]) {
dp[i][j] = dp[i - 1][j];
} else {
dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);
}
}
}
}
// 一维数组
function bagProblem(weight, value, bagWeight) {
let dp = new Array(bagWeight.length + 1).fill(0);
for (let i = 0; i < weight.length; i++) {
for (let j = bagWeight; j >= 0; j--) {
dp[j] = Math.max(dp[j], dp[j - weight[i]] + value[i]);
}
}
}