mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 02:53:31 +08:00
添加(背包问题理论基础多重背包.md):增加typescript版本
This commit is contained in:
@ -334,6 +334,64 @@ func Test_multiplePack(t *testing.T) {
|
|||||||
PASS
|
PASS
|
||||||
```
|
```
|
||||||
|
|
||||||
|
TypeScript:
|
||||||
|
|
||||||
|
> 版本一(改变数据源):
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
function testMultiPack() {
|
||||||
|
const bagSize: number = 10;
|
||||||
|
const weightArr: number[] = [1, 3, 4],
|
||||||
|
valueArr: number[] = [15, 20, 30],
|
||||||
|
amountArr: number[] = [2, 3, 2];
|
||||||
|
for (let i = 0, length = amountArr.length; i < length; i++) {
|
||||||
|
while (amountArr[i] > 1) {
|
||||||
|
weightArr.push(weightArr[i]);
|
||||||
|
valueArr.push(valueArr[i]);
|
||||||
|
amountArr[i]--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const goodsNum: number = weightArr.length;
|
||||||
|
const dp: number[] = new Array(bagSize + 1).fill(0);
|
||||||
|
// 遍历物品
|
||||||
|
for (let i = 0; i < goodsNum; i++) {
|
||||||
|
// 遍历背包容量
|
||||||
|
for (let j = bagSize; j >= weightArr[i]; j--) {
|
||||||
|
dp[j] = Math.max(dp[j], dp[j - weightArr[i]] + valueArr[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(dp);
|
||||||
|
}
|
||||||
|
testMultiPack();
|
||||||
|
```
|
||||||
|
|
||||||
|
> 版本二(改变遍历方式):
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
function testMultiPack() {
|
||||||
|
const bagSize: number = 10;
|
||||||
|
const weightArr: number[] = [1, 3, 4],
|
||||||
|
valueArr: number[] = [15, 20, 30],
|
||||||
|
amountArr: number[] = [2, 3, 2];
|
||||||
|
const goodsNum: number = weightArr.length;
|
||||||
|
const dp: number[] = new Array(bagSize + 1).fill(0);
|
||||||
|
// 遍历物品
|
||||||
|
for (let i = 0; i < goodsNum; i++) {
|
||||||
|
// 遍历物品个数
|
||||||
|
for (let j = 0; j < amountArr[i]; j++) {
|
||||||
|
// 遍历背包容量
|
||||||
|
for (let k = bagSize; k >= weightArr[i]; k--) {
|
||||||
|
dp[k] = Math.max(dp[k], dp[k - weightArr[i]] + valueArr[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(dp);
|
||||||
|
}
|
||||||
|
testMultiPack();
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||||
|
Reference in New Issue
Block a user