1. function bagProblem(weight, value, bagWeight) {
    2. let dp = new Array(weight.length + 1).fill(0).map(() => new Array(bagWeight + 1).fill(0));
    3. for (let j = bagWeight; j >= weight[0]; j--) {
    4. dp[0][j] = dp[0][j - weight[0]] + value[0];
    5. }
    6. for (let i = 0; i < weight.length; i++) {
    7. for (let j = 0; j <= bagWeight; j++) {
    8. if (j < weight[i]) {
    9. dp[i][j] = dp[i - 1][j];
    10. } else {
    11. dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);
    12. }
    13. }
    14. }
    15. }
    1. // 一维数组
    2. function bagProblem(weight, value, bagWeight) {
    3. let dp = new Array(bagWeight.length + 1).fill(0);
    4. for (let i = 0; i < weight.length; i++) {
    5. for (let j = bagWeight; j >= 0; j--) {
    6. dp[j] = Math.max(dp[j], dp[j - weight[i]] + value[i]);
    7. }
    8. }
    9. }