python写一个贪心算法
时间: 2023-10-16 21:10:08 浏览: 93
好的,这里给你一个简单的贪心算法的例子:假设有一组任务,每个任务需要一定的时间和报酬,每个任务只能被完成一次,最多只能同时完成一个任务,如何安排任务才能获得最大的报酬?
我们可以按照任务的报酬从高到低排序,然后从前往后遍历每个任务,对于每个任务,我们判断它能否被完成(即它的开始时间不能早于所有已选择任务的结束时间),如果能完成,就将它加入已选择任务列表中,并将当前总报酬增加该任务的报酬。最后,我们得到的已选择任务列表就是最优解。
下面是 Python 代码实现:
```python
def schedule_tasks(tasks):
# 按报酬从高到低排序
tasks = sorted(tasks, key=lambda x: x[1], reverse=True)
# 记录已选择任务和当前总报酬
selected_tasks = []
total_reward = 0
for task in tasks:
start_time, end_time, reward = task
# 判断当前任务能否被完成
if not selected_tasks or start_time >= selected_tasks[-1][1]:
selected_tasks.append(task)
total_reward += reward
return selected_tasks, total_reward
```
这里假设任务的数据结构为一个三元组 (start_time, end_time, reward),其中 start_time 和 end_time 分别表示任务的开始时间和结束时间,reward 表示任务的报酬。函数的返回值为一个二元组 (selected_tasks, total_reward),其中 selected_tasks 是已选择的任务列表,total_reward 是当前总报酬。
阅读全文