This commit is contained in:
krahets
2023-09-02 23:03:42 +08:00
parent 799698e67c
commit 503ca797b8
12 changed files with 314 additions and 91 deletions

View File

@@ -659,10 +659,7 @@ $$
return 1;
}
// 初始化 dp 表,用于存储子问题的解
const dp = Array.from(
{ length: n + 1 },
() => new Array(3)
);
const dp = Array.from({ length: n + 1 }, () => new Array(3));
// 初始状态:预设最小子问题的解
dp[1][1] = 1;
dp[1][2] = 0;

View File

@@ -185,8 +185,7 @@ $$
}
// 计算不放入和放入物品 i 的最大价值
const no = knapsackDFS(wgt, val, i - 1, c);
const yes =
knapsackDFS(wgt, val, i - 1, c - wgt[i - 1]) + val[i - 1];
const yes = knapsackDFS(wgt, val, i - 1, c - wgt[i - 1]) + val[i - 1];
// 返回两种方案中价值更大的那一个
return Math.max(no, yes);
}
@@ -438,7 +437,8 @@ $$
}
// 计算不放入和放入物品 i 的最大价值
const no = knapsackDFSMem(wgt, val, mem, i - 1, c);
const yes = knapsackDFSMem(wgt, val, mem, i - 1, c - wgt[i - 1]) + val[i - 1];
const yes =
knapsackDFSMem(wgt, val, mem, i - 1, c - wgt[i - 1]) + val[i - 1];
// 记录并返回两种方案中价值更大的那一个
mem[i][c] = Math.max(no, yes);
return mem[i][c];