Update
This commit is contained in:
@@ -438,6 +438,58 @@ print(dp[n - 1][bagweight])
|
||||
### Go
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var n, bagweight int // bagweight代表行李箱空间
|
||||
fmt.Scan(&n, &bagweight)
|
||||
|
||||
weight := make([]int, n) // 存储每件物品所占空间
|
||||
value := make([]int, n) // 存储每件物品价值
|
||||
|
||||
for i := 0; i < n; i++ {
|
||||
fmt.Scan(&weight[i])
|
||||
}
|
||||
for j := 0; j < n; j++ {
|
||||
fmt.Scan(&value[j])
|
||||
}
|
||||
// dp数组, dp[i][j]代表行李箱空间为j的情况下,从下标为[0, i]的物品里面任意取,能达到的最大价值
|
||||
dp := make([][]int, n)
|
||||
for i := range dp {
|
||||
dp[i] = make([]int, bagweight + 1)
|
||||
}
|
||||
|
||||
// 初始化, 因为需要用到dp[i - 1]的值
|
||||
// j < weight[0]已在上方被初始化为0
|
||||
// j >= weight[0]的值就初始化为value[0]
|
||||
for j := weight[0]; j <= bagweight; j++ {
|
||||
dp[0][j] = value[0]
|
||||
}
|
||||
|
||||
for i := 1; i < n; i++ { // 遍历科研物品
|
||||
for j := 0; j <= bagweight; j++ { // 遍历行李箱容量
|
||||
if j < weight[i] {
|
||||
dp[i][j] = dp[i-1][j] // 如果装不下这个物品,那么就继承dp[i - 1][j]的值
|
||||
} else {
|
||||
dp[i][j] = max(dp[i-1][j], dp[i-1][j-weight[i]]+value[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println(dp[n-1][bagweight])
|
||||
}
|
||||
|
||||
func max(x, y int) int {
|
||||
if x > y {
|
||||
return x
|
||||
}
|
||||
return y
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### Javascript
|
||||
|
||||
Reference in New Issue
Block a user