题解 | 【模板】01背包
【模板】01背包
https://www.nowcoder.com/practice/fd55637d3f24484e96dad9e992d3f62e
n,v = map(int,input().split())
vol = []
weight = []
for _ in range(n):
vi, wi = map(int, input().split())
vol.append(vi)
weight.append(wi)
#容量v的最大价值
dp = [-float('inf') for _ in range(v+1)]
dp[0] =0
for i in range(n):
for j in range(v,vol[i]-1,-1):
dp[j] = max(dp[j - vol[i]]+weight[i],dp[j])
print(max(dp))
full = dp[-1]if dp[-1] > 0 else 0
print(full)
查看11道真题和解析

