贪心算法代码python
时间: 2023-10-30 17:00:25 浏览: 176
贪心算法代码
当然可以!下面是一个简单的贪心算法示例代码,用于求解背包问题:
```python
def knapsack_greedy(weights, values, capacity):
n = len(weights)
# 计算每个物品的性价比
ratios = [values[i] / weights[i] for i in range(n)]
# 按照性价比降序排序
items = sorted(zip(weights, values, ratios), key=lambda x: x[2], reverse=True)
total_value = 0
total_weight = 0
for item in items:
if total_weight + item[0] <= capacity:
total_weight += item[0]
total_value += item[1]
else:
remaining_capacity = capacity - total_weight
total_weight += remaining_capacity
total_value += remaining_capacity * item[2]
break
return total_value
# 测试
weights = [10, 20, 30]
values = [60, 100, 120]
capacity = 50
max_value = knapsack_greedy(weights, values, capacity)
print("最大价值:", max_value)
```
这段代码使用贪心算法求解背包问题,其中`weights`和`values`分别表示物品的重量和价值,`capacity`表示背包的容量。算法首先计算每个物品的性价比,并按照性价比降序排序。然后从性价比最高的物品开始依次放入背包,直到背包装满或所有物品放完。注意,这只是贪心算法的一种简单实现,可能不是最优解。
阅读全文