给定一组具有相关权重的活动,选择将使总权重最大化的非重叠活动集

时间:2016-11-19 14:48:40

标签: algorithm dynamic-programming binary-search

我一直在思考并寻找这个问题的解决方案,在wikipedia

上找到了

解决方案建议找到i的完成时间< =开始时间的活动。 但是,请考虑这个例子:

起动时:[1,2,3,4,5]

结束时:[3,4,5,6,7]

各自重量:[13,5,2,4,1]

对于这个例子,当我参加活动时:(4-6),我将有2个完成时间小于4的活动,所以,不应该只通过二分搜索搜索数字,不应该返回一个数组,然后从中获取最大值。

如果我误解了这个概念,请纠正我。

1 个答案:

答案 0 :(得分:0)

根据文章opt[i] = MAX(opt[i-1], opt[t] + w(i)),即opt[i]会考虑在i之前结束的所有活动。这就是为什么不需要迭代所有可能的选项。