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]); } }}