有n个活动需要安排在礼堂举行,每个活动有编号、开始时间、结束时间,请您去安排本次活动,在有限时间内尽量多的安排活动?python
时间: 2024-10-16 21:11:57 浏览: 20
浅谈Python实现贪心算法与活动安排问题
这个问题通常可以视为一个调度优化问题,特别是二分查找或者贪心算法的应用。在Python中,我们可以使用优先队列(如`heapq`模块)来解决。这里是一个简单的解决方案:
```python
import heapq
def schedule_activities(activities):
# 活动数据应包含活动编号、开始时间和结束时间
activities.sort(key=lambda x: x[1]) # 首先按开始时间排序
scheduled = []
max_start_time = float('-inf') # 初始化最大结束时间为负无穷大
for act in activities:
if act[1] > max_start_time: # 如果活动开始时间晚于当前的最大结束时间
max_start_time = act[2] # 更新最大结束时间为该活动的结束时间
heapq.heappush(scheduled, (act[0], act[2])) # 将活动添加到堆中,按照结束时间排序
return scheduled
# 示例数据
activities = [(1, 2, 4), (3, 5, 7), (6, 8, 9)]
scheduled_activities = schedule_activities(activities)
print("Scheduled Activities:", scheduled_activities)
#
阅读全文