写一份动态规划解决部分背包问题的代码
时间: 2023-07-07 10:28:21 浏览: 78
什么是背包问题,用python解决背包问题
好的,以下是动态规划解决部分背包问题的代码,具体注释请查看代码中的注释:
```python
# 物品数量
n = 4
# 背包容量
W = 8
# 每个物品的重量
wt = [2, 3, 4, 5]
# 每个物品的价值
val = [3, 4, 5, 6]
# 初始化动态规划表
dp = [[0] * (W + 1) for _ in range(n)]
# 填充动态规划表
for i in range(n):
for j in range(1, W + 1):
# 当前物品的重量大于背包容量,不能放入背包
if wt[i] > j:
dp[i][j] = dp[i - 1][j]
else:
# 取当前物品和不取当前物品中价值更大的一种情况
dp[i][j] = max(dp[i - 1][j], dp[i][j - wt[i]] + val[i])
# 打印动态规划表
for i in range(n):
for j in range(W + 1):
print(dp[i][j], end='\t')
print()
# 输出最终结果
print("最大价值为:", dp[n - 1][W])
```
注意:这份代码是解决“部分背包问题”的,即每个物品可以选择放入一部分,而不一定完全放入。如果要解决“0/1背包问题”,只需要将第13行修改为 `if wt[i] <= j:` 即可。
阅读全文