2. 01背包问题 - AcWing题库
n,v=map(int,input().split())
dp=[[0 for i in range(v+1)] for i in range(n+1)]
for i in range(1,n+1):
v_,w=map(int,input().split())
for j in range(v+1):
dp[i][j]=dp[i-1][j]
if j>=v_:
dp[i][j]=max(dp[i][j],dp[i-1][j-v_]+w)
print(dp[n][v])
3. 完全背包问题 - AcWing题库
n,v=map(int,input().split())
dp=[[0 for i in range(v+1)] for i in range(n+1)]
for i in range(1,n+1):
v_,w=map(int,input().split())
for j in range(v+1):
dp[i][j]=dp[i-1][j]
if j>=v_:
dp[i][j]=max(dp[i][j],dp[i][j-v_]+w)
print(dp[n][v])
1371. 货币系统 - AcWing题库
n,m=map(int,input().split())
v=[0]
v.extend(list(map(int, input().split())))
while len(v) < n + 1:
v.extend(list(map(int, input().split())))dp=[[0 for i in range(m+1)] for i in range(n+1)]
dp[0][0]=1for i in range(1,n+1):
for j in range(m+1):
dp[i][j]=dp[i-1][j]
if j>=v[i]:
dp[i][j]+=dp[i][j-v[i]]
print(dp[n][m])