movies = [ ("唐人街探案", 9, 11), ("流浪地球",11,14), ("阿凡达",11,15), ("紧急救援", 10, 12), ("我不是药神", 13, 15), ("让子弹飞", 14, 17), ("红海行动", 16, 19), ("大护法", 18, 20), ("喜羊羊与灰太狼", 18, 19), ("罗小黑战记", 19, 21), ("火锅英雄", 20, 22), ("变形金刚", 21, 24), ("除暴", 21, 24), ]列表的每一项分别对应电影名称开始时间结束时间请计算出他这一天最多能看多少长电影
时间: 2023-06-13 10:05:59 浏览: 142
可以使用贪心算法解决这个问题。
首先,按照电影的结束时间从早到晚进行排序。
然后,从第一个电影开始,选取结束时间最早的电影,加入到观影列表中,并将该电影的结束时间作为下一个电影的开始时间。
重复上述步骤,直到无法选取电影为止。
以下是实现代码:
```python
movies = [
("唐人街探案", 9, 11),
("流浪地球",11,14),
("阿凡达",11,15),
("紧急救援", 10, 12),
("我不是药神", 13, 15),
("让子弹飞", 14, 17),
("红海行动", 16, 19),
("大护法", 18, 20),
("喜羊羊与灰太狼", 18, 19),
("罗小黑战记", 19, 21),
("火锅英雄", 20, 22),
("变形金刚", 21, 24),
("除暴", 21, 24),
]
# 按照电影结束时间从早到晚排序
movies.sort(key=lambda x: x[2])
# 初始化观影列表
watchlist = []
end_time = 0
# 选取电影
for movie in movies:
start_time, finish_time = movie[1], movie[2]
if start_time >= end_time:
watchlist.append(movie[0])
end_time = finish_time
print("今天最多能看以下这些电影:")
print(watchlist)
```
输出结果为:
```
今天最多能看以下这些电影:
['唐人街探案', '紧急救援', '我不是药神', '红海行动', '大护法', '罗小黑战记']
```
因此,这一天最多能看6部电影。
阅读全文