#coding:utf-8
def bage(n, v):
# w = [0, 3, 4, 5]
# c = [4, 5, 6]
w = [0, 2, 3, 5, 5]
c = [0, 2, 4, 3, 7]
dp = [[0] * (v + 1) for _ in range(n + 1)]
for i in range(1, n + 1):
for j in range(1, v + 1):
if j >= w[i]:
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + c[i])
else:
dp[i][j] = dp[i - 1][j]
print(dp)
bage(4, 10)
# output:
[
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[0, 0, 2, 4, 4, 6, 6, 6, 6, 6, 6],
[0, 0, 2, 4, 4, 6, 6, 6, 7, 7, 9],
[0, 0, 2, 4, 4, 7, 7, 9, 11, 11, 13]
]
思路参考:
https://www.cnblogs.com/mfrank/p/10533701.html