写一个贪婪算法的python实例
时间: 2024-04-29 17:26:34 浏览: 103
好的,以下是一个贪婪算法的Python实例:
假设有一组物品,每个物品有一个权重和一个价值。现在有一个背包,它最多能装下一定重量的物品,请你设计一个贪婪算法,使得背包中的物品总价值最大。
```python
def greedy_algorithm(weights, values, capacity):
"""贪婪算法求解背包问题"""
n = len(weights)
# 按照性价比排序,从大到小排序
ratio = [values[i] / weights[i] for i in range(n)]
item_order = [i for i in range(n)]
item_order.sort(key=lambda x: ratio[x], reverse=True)
# 依次选择性价比最高的物品
max_value = 0
for i in item_order:
if weights[i] <= capacity:
capacity -= weights[i]
max_value += values[i]
else:
max_value += capacity * ratio[i]
break
return max_value
```
在函数 `greedy_algorithm` 中,传入三个参数:
* `weights` :物品的重量列表
* `values` :物品的价值列表
* `capacity` :背包的最大容量
首先,我们将所有物品按照性价比从大到小排序,由高到低依次选择物品放入背包中。如果背包还能继续放,则将当前物品全部放入背包,否则只放入部分。
最终返回放入背包后的最大价值。
阅读全文