贪心算法背包问题python要输出怎么装的
时间: 2023-07-11 15:18:02 浏览: 91
用贪心算法实现背包问题
5星 · 资源好评率100%
如果你想要输出具体的装法,可以对代码进行一些修改,记录下每个物品是否被装入背包,最后输出被装入背包的物品即可。
以下是修改后的代码示例:
```python
def knapsack(capacity, weights, values):
n = len(weights)
ratio = [(values[i] / weights[i], i) for i in range(n)]
ratio.sort(reverse=True)
max_value = 0
selected = [0] * n # 记录每个物品是否被选择
for r, i in ratio:
if capacity >= weights[i]:
selected[i] = 1 # 标记该物品被选择
max_value += values[i]
capacity -= weights[i]
else:
selected[i] = capacity / weights[i] # 记录部分被选择的物品
max_value += r * capacity
break
return max_value, selected
# 测试
capacity = 50
weights = [10, 20, 30]
values = [60, 100, 120]
max_value, selected = knapsack(capacity, weights, values)
print("最大价值为:", max_value)
print("选择的物品为:", [i for i in range(len(selected)) if selected[i] > 0])
```
输出结果:
```
最大价值为: 220
选择的物品为: [0, 1, 2]
```
其中,选择的物品为 `[0, 1, 2]` 表示三个物品都被选择了。如果某个物品被选择了一部分,那么在选择的物品列表中会输出该物品的下标,例如 `[0, 1, 2.5]` 表示前两个物品被全部选择,第三个物品被选择了一半。
阅读全文