Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 842c042

Browse files
添加(背包问题理论基础多重背包.md):增加typescript版本
1 parent feaea1b commit 842c042

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

‎problems/背包问题理论基础多重背包.md‎

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,64 @@ func Test_multiplePack(t *testing.T) {
334334
PASS
335335
```
336336

337+
TypeScript:
338+
339+
> 版本一(改变数据源):
340+
341+
```typescript
342+
function testMultiPack() {
343+
const bagSize: number = 10;
344+
const weightArr: number[] = [1, 3, 4],
345+
valueArr: number[] = [15, 20, 30],
346+
amountArr: number[] = [2, 3, 2];
347+
for (let i = 0, length = amountArr.length; i < length; i++) {
348+
while (amountArr[i] > 1) {
349+
weightArr.push(weightArr[i]);
350+
valueArr.push(valueArr[i]);
351+
amountArr[i]--;
352+
}
353+
}
354+
const goodsNum: number = weightArr.length;
355+
const dp: number[] = new Array(bagSize + 1).fill(0);
356+
// 遍历物品
357+
for (let i = 0; i < goodsNum; i++) {
358+
// 遍历背包容量
359+
for (let j = bagSize; j >= weightArr[i]; j--) {
360+
dp[j] = Math.max(dp[j], dp[j - weightArr[i]] + valueArr[i]);
361+
}
362+
}
363+
console.log(dp);
364+
}
365+
testMultiPack();
366+
```
367+
368+
> 版本二(改变遍历方式):
369+
370+
```typescript
371+
function testMultiPack() {
372+
const bagSize: number = 10;
373+
const weightArr: number[] = [1, 3, 4],
374+
valueArr: number[] = [15, 20, 30],
375+
amountArr: number[] = [2, 3, 2];
376+
const goodsNum: number = weightArr.length;
377+
const dp: number[] = new Array(bagSize + 1).fill(0);
378+
// 遍历物品
379+
for (let i = 0; i < goodsNum; i++) {
380+
// 遍历物品个数
381+
for (let j = 0; j < amountArr[i]; j++) {
382+
// 遍历背包容量
383+
for (let k = bagSize; k >= weightArr[i]; k--) {
384+
dp[k] = Math.max(dp[k], dp[k - weightArr[i]] + valueArr[i]);
385+
}
386+
}
387+
}
388+
console.log(dp);
389+
}
390+
testMultiPack();
391+
```
392+
393+
394+
337395

338396
-----------------------
339397
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /