def bag(n, c, w, v):
# """
# 测试数据:
# n = 6 物品的数量,
# c = 10 书包能承受的重量,
# w = [2, 2, 3, 1, 5, 2] 每个物品的重量,
# v = [2, 3, 1, 5, 4, 3] 每个物品的价值
# """
# 置零,表示初始状态,多建了一行的空行
value = [[0 for j in range(c + 1)] for i in range(n + 1)]
for i in range(1, n + 1):
for j in range(1, c + 1):
value[i][j] = value[i - 1][j]
# 背包总容量够放当前物体,遍历前一个状态考虑是否置换
if j >= w[i - 1] and value[i][j] < value[i - 1][j - w[i - 1]] + v[i - 1]:
value[i][j] = value[i - 1][j - w[i - 1]] + v[i - 1]
# for x in value:
# print(x)
return value
# n = 6
# c = 10
# w = [2, 2, 3, 1, 5, 2]
# v = [2, 3, 1, 5, 4, 3]
n = 3
c = 4
w = [4, 3, 1]
v = [3000, 2000, 1500]
bag(n, c, w, v)
9.背包问题
最新推荐文章于 2023-02-16 15:31:16 发布