AcWing 3. 完全背包问题-py3(两种方法)
原题链接
简单
作者:
acwyng
,
2025-03-19 21:32:35
· 江苏
,
所有人可见
,
阅读 1
#!一维数组办法
n,m=map(int,input().split())
f=[0]*(m+1)
w=[0]
c=[0]
for i in range(1,n+1):
x,y=map(int,input().split())
w.append(x)
c.append(y)
for i in range(1,n+1):
for j in range(w[i],m+1):
f[j]=max(f[j],f[j-w[i]]+c[i])
print(f[m])
#!二维数组办法
n,m=map(int,input().split())
f=[[0]*(m+1) for _ in range(n+1)]
w=[0]
c=[0]
for i in range(1,n+1):
x,y=map(int,input().split())
w.append(x)
c.append(y)
for i in range(1,n+1):
for j in range(1,m+1):
if j<w[i]:
f[i][j]=f[i-1][j]
else:
f[i][j]=max(f[i-1][j],f[i][j-w[i]]+c[i])
print(f[n][m])