一维01背包问题输出选择的物品
时间: 2023-07-07 11:35:48 浏览: 91
c++用动态规划实现01背包问题
5星 · 资源好评率100%
好的,针对一维01背包问题,输出选择的物品的代码如下:
```python
def knapsack(W, wt, val, n):
# 创建二维数组
K = [[0 for x in range(W + 1)] for x in range(n + 1)]
# 填充K[][]表格
for i in range(n + 1):
for w in range(W + 1):
if i == 0 or w == 0:
K[i][w] = 0
elif wt[i-1] <= w:
K[i][w] = max(val[i-1] + K[i-1][w-wt[i-1]], K[i-1][w])
else:
K[i][w] = K[i-1][w]
# 输出选择的物品
res = K[n][W]
print("选中的物品编号为:")
w = W
for i in range(n, 0, -1):
if res <= 0:
break
if res == K[i-1][w]:
continue
else:
print(i, end=" ")
res -= val[i-1]
w -= wt[i-1]
```
其中,W表示背包的容量,wt数组表示每个物品的重量,val数组表示每个物品的价值,n表示物品的个数。函数执行后,会输出选择的物品的编号。
阅读全文