python 01背包
时间: 2023-10-19 19:06:54 浏览: 96
python 0-1背包
在Python中,01背包问题可以通过动态规划算法来解决。下面是解决该问题的代码:
```python
# 从键盘输入中得到物品的体积和价值
def qu(N):
for i in range(N):
x = [int(j) for j in input().split()]
v.append(x[0])
w.append(x[1])
return v, w
# 获取最大的价值
def max_():
for i in range(1, n+1): # 有几个物品可供选择
for j in range(1, m+1): # 模拟背包容量从1到m
if j < v[i-1]: # 如果此时背包容量小于当前物品重量
f[i][j] = f[i - 1][j] # 不拿这个物品
else: # 此时有两种选择,拿或不拿
f[i][j] = max(f[i - 1][j], f[i - 1][j - v[i - 1]] + w[i-1]) # 选择最好的一种方式,也就是两种情况作比较,取价值的较大值
# 取得物品的个数和背包的总体积
a = [int(i) for i in input().split()]
n = a[0] # 物品的个数
m = a[1] # 背包总体积
# 各个物品的体积列表和价值列表
v = []
w = []
# 将物品的体积和价值装入列表中
qu(n)
# 模拟背包
f = [[0] * (m+1) for _ in range(n+1)]
# 获取最大的价值
max_()
print(f[n][m])
```
该代码通过动态规划算法来解决01背包问题,并输出背包能够装下的最大价值。
阅读全文