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

[pull] master from youngyangyang04:master #476

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
pull merged 7 commits into AlgorithmAndLeetCode:master from youngyangyang04:master
Aug 23, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
01背包-2增加Go一维数组,二维数组移至-1
  • Loading branch information
markwang1992 committed Aug 9, 2024
commit 93c206794beafcf6c2416e59291351984982e2b9
52 changes: 52 additions & 0 deletions problems/背包理论基础01背包-1.md
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -437,6 +437,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
Expand Down
73 changes: 34 additions & 39 deletions problems/背包理论基础01背包-2.md
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -318,50 +318,45 @@ print(dp[n - 1][bagweight])
package main

import (
"fmt"
"fmt"
)

func main() {
var n, bagweight int
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 := make([][]int, n)
for i := range dp {
dp[i] = make([]int, bagweight+1)
}

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]
} else {
dp[i][j] = max(dp[i-1][j], dp[i-1][j-weight[i]]+value[i])
}
}
}

fmt.Println(dp[n-1][bagweight])
// 读取 M 和 N
var M, N int
fmt.Scan(&M, &N)

costs := make([]int, M)
values := make([]int, M)

for i := 0; i < M; i++ {
fmt.Scan(&costs[i])
}
for j := 0; j < M; j++ {
fmt.Scan(&values[j])
}

// 创建一个动态规划数组dp,初始值为0
dp := make([]int, N + 1)

// 外层循环遍历每个类型的研究材料
for i := 0; i < M; i++ {
// 内层循环从 N 空间逐渐减少到当前研究材料所占空间
for j := N; j >= costs[i]; j-- {
// 考虑当前研究材料选择和不选择的情况,选择最大值
dp[j] = max(dp[j], dp[j-costs[i]] + values[i])
}
}

// 输出dp[N],即在给定 N 行李空间可以携带的研究材料最大价值
fmt.Println(dp[N])
}

func max(a, b int) int {
if a > b {
return a
}
return b
func max(x, y int) int {
if x > y {
return x
}
return y
}

```
Expand Down

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