mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 19:44:45 +08:00
添加(背包理论基础01背包-1.md):增加typescript版本
This commit is contained in:
@ -423,5 +423,47 @@ function test () {
|
|||||||
test();
|
test();
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### TypeScript
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
function testWeightBagProblem(
|
||||||
|
weight: number[],
|
||||||
|
value: number[],
|
||||||
|
size: number
|
||||||
|
): number {
|
||||||
|
/**
|
||||||
|
* dp[i][j]: 前i个物品,背包容量为j,能获得的最大价值
|
||||||
|
* dp[0][*]: u=weight[0],u之前为0,u之后(含u)为value[0]
|
||||||
|
* dp[*][0]: 0
|
||||||
|
* ...
|
||||||
|
* dp[i][j]: max(dp[i-1][j], dp[i-1][j-weight[i]]+value[i]);
|
||||||
|
*/
|
||||||
|
const goodsNum: number = weight.length;
|
||||||
|
const dp: number[][] = new Array(goodsNum)
|
||||||
|
.fill(0)
|
||||||
|
.map((_) => new Array(size + 1).fill(0));
|
||||||
|
for (let i = weight[0]; i <= size; i++) {
|
||||||
|
dp[0][i] = value[0];
|
||||||
|
}
|
||||||
|
for (let i = 1; i < goodsNum; i++) {
|
||||||
|
for (let j = 1; 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]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dp[goodsNum - 1][size];
|
||||||
|
}
|
||||||
|
// test
|
||||||
|
const weight = [1, 3, 4];
|
||||||
|
const value = [15, 20, 30];
|
||||||
|
const size = 4;
|
||||||
|
console.log(testWeightBagProblem(weight, value, size));
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
<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