原题链接:https://www.acwing.com/problem/content/4/
package main
import "fmt"
const N = 1010
var dp [N]int
func main() {
var n, m, v, w, s int
fmt.Scan(&n, &m)
for i := 0; i < n; i++ {
fmt.Scan(&v, &w, &s)
for j := m; j >= v; j-- {
for k := 0; k <= s && k*v <= j; k++ { //与01背包区别就是多加了这层循环
dp[j] = max(dp[j], dp[j-k*v]+k*w)
}
}
}
fmt.Println(dp[m])
}
func max(a int, b int) int {
if a > b {
return a
}
return b
}