考虑持续时间且没有重叠的最佳电影时间表

时间:2016-03-29 19:20:34

标签: algorithm

我正在努力寻找解决这个问题的好策略。我考虑按时间对电影集合进行排序,但这似乎掩盖了重叠条件。有任何想法吗?

我想到的另一件事是基于开始月份进行排序,然后接近this problem的扩展名。

  

为演员提供一组电影(开始月份和   持续时间)。你必须选择演员应该做的电影   演员可以在一年中拍摄最多的电影,没有任何电影   重叠。

     

假设电影在一个月的第一天开始,然后结束   最后一天。几个月是30天(不是必需的?)。

2 个答案:

答案 0 :(得分:2)

我写了一些代码来演示解决方案。整体本质与vtd-xml类似。首先是按照结束时间对电影进行排序。现在,贪婪地总是选择第一个选项。

为什么选择第一个选项有效?

在我们的情况下,我们的订单A有第一部电影,有些是a。假设有另一个排序B,其中第一部电影是bba。必须有一个排序(我们已经知道A的存在), A = {B - {b}} U {{{ 1}}} 即可。显然,在a的情况下,B的时间最短;由于 bb 持续时间(a)> =持续时间(b

a

答案 1 :(得分:1)

按照结束日期排列电影列表。对于每部电影,你想要解决“在这部电影结束时我可以演出的最大电影数量是多少。”这可以递归地找到最近电影的结果的最大值,或者一个加上最近电影在此开始之前结束的结果。

第一个案例对应于“我没有在这部电影中扮演过角色,因此在这段时间内可以继续观看其他电影。”第二种情况对应于“我在这部电影中扮演的角色,但是在这部电影开始之前没有结束的任何电影都没有。”