背包理论基础01背包-1 js 版本修改

This commit is contained in:
Jamcy123
2022-05-12 16:04:42 +08:00
parent 8e070aeb48
commit 5627d4ba86

View File

@ -380,44 +380,31 @@ func main() {
### javascript ### javascript
```js ```js
function testweightbagproblem (wight, value, size) { function testWeightBagProblem (weight, value, size) {
const len = wight.length, // 定义 dp 数组
dp = array.from({length: len + 1}).map( const len = weight.length,
() => array(size + 1).fill(0) dp = Array(len).fill().map(() => Array(size + 1).fill(0));
);
for(let i = 1; i <= len; i++) { // 初始化
for(let j = 0; j <= size; j++) { for(let j = weight[0]; j <= size; j++) {
if(wight[i - 1] <= j) { dp[0][j] = value[0];
dp[i][j] = math.max(
dp[i - 1][j],
value[i - 1] + dp[i - 1][j - wight[i - 1]]
)
} else {
dp[i][j] = dp[i - 1][j];
}
} }
}
// console.table(dp); // weight 数组的长度len 就是物品个数
for(let i = 1; i < len; i++) { // 遍历物品
return dp[len][size]; for(let j = 0; j <= size; 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 testWeightBagProblem2 (wight, value, size) { }
const len = wight.length,
dp = Array(size + 1).fill(0);
for(let i = 1; i <= len; i++) {
for(let j = size; j >= wight[i - 1]; j--) {
dp[j] = Math.max(dp[j], value[i - 1] + dp[j - wight[i - 1]]);
} }
}
return dp[size];
}
console.table(dp)
return dp[len - 1][size];
}
function test () { function test () {
console.log(testWeightBagProblem([1, 3, 4, 5], [15, 20, 30, 55], 6)); console.log(testWeightBagProblem([1, 3, 4, 5], [15, 20, 30, 55], 6));
} }
test(); test();