贪心算法背包问题代码
时间: 2023-07-04 22:05:28 浏览: 104
以下是基于贪心算法的背包问题代码:
```python
def knapsack_greedy(weights, values, capacity):
n = len(weights)
items = list(zip(weights, values))
items.sort(key=lambda x: x[1]/x[0], reverse=True)
total_value = 0
for item in items:
if capacity == 0:
break
weight, value = item
if capacity >= weight:
total_value += value
capacity -= weight
else:
total_value += capacity * (value/weight)
capacity = 0
return total_value
```
其中,`weights`和`values`分别表示物品的重量和价值,`capacity`为背包的容量。代码首先将物品按单位重量的价值从大到小排序,然后遍历每个物品,如果当前物品可以完全放入背包,则将其放入并更新背包剩余容量和总价值;否则,只放入一部分物品,并更新背包剩余容量和总价值。最后返回总价值。
阅读全文