【发布时间】:2016-11-20 18:51:39
【问题描述】:
我遇到了这个看起来很有趣的问题。有几部电影我们想全部观看,但它们只在以下时间放映:
movieA : 15
movieB : 14, 15, 17
movieC : 15, 17
movieD : 15, 20
我们可以在 15 点观看 A,在 14 点观看 B,在 17 点观看 C,在 20 点观看 D,因此可以全部观看。请注意,您不能在 15 岁时观看 C,这是不可行的。
如你所料,问题是我们能否全部观看。
显然我们可以通过回溯来解决它,尝试所有可能性。有更好的方法吗?我有一个想法,首先从可用次数最少的电影开始,这样如果有解决方案,我们可以更快地找到解决方案,最坏情况的时间复杂度仍然相同。
有没有更好的算法来解决这个问题?
附: 正如@gen 所问,我忘了指出每部电影是 1 小时,所以如果您在 14:00 观看一部,您将不会错过 15:00 的一部。谢谢提问。
【问题讨论】:
-
一部电影有多长?
-
@gen 每部电影都是一个小时,所以你看14:00的电影不用担心,你可能会错过15:00的电影。好问题!
-
看起来像二分图上的最大匹配问题。
标签: algorithm sorting dynamic-programming greedy