我正在努力寻找解决这个问题的好策略。我考虑按时间对电影集合进行排序,但这似乎掩盖了重叠条件。有任何想法吗?
我想到的另一件事是基于开始月份进行排序,然后接近this problem的扩展名。
为演员提供一组电影(开始月份和 持续时间)。你必须选择演员应该做的电影 演员可以在一年中拍摄最多的电影,没有任何电影 重叠。
假设电影在一个月的第一天开始,然后结束 最后一天。几个月是30天(不是必需的?)。
答案 0 :(得分:2)
我写了一些代码来演示解决方案。整体本质与vtd-xml类似。首先是按照结束时间对电影进行排序。现在,贪婪地总是选择第一个选项。
为什么选择第一个选项有效?
在我们的情况下,我们的订单A
有第一部电影,有些是a
。假设有另一个排序B
,其中第一部电影是b
,b
≠a
。必须有一个排序(我们已经知道A
的存在), A
= {B
- {b
}} U {{{ 1}}} 即可。显然,在a
的情况下,B
的时间最短;由于 b
≠b
,持续时间(a
)> =持续时间(b
)。
a
答案 1 :(得分:1)
按照结束日期排列电影列表。对于每部电影,你想要解决“在这部电影结束时我可以演出的最大电影数量是多少。”这可以递归地找到最近电影的结果的最大值,或者一个加上最近电影在此开始之前结束的结果。
第一个案例对应于“我没有在这部电影中扮演过角色,因此在这段时间内可以继续观看其他电影。”第二种情况对应于“我在这部电影中扮演的角色,但是在这部电影开始之前没有结束的任何电影都没有。”