贪婪算法优化

时间:2014-01-13 01:14:09

标签: algorithm greedy

考虑一台有责任录制电视节目的DVR录像机。 每个节目都有一个开始时间和结束时间。 DVR具有以下限制:

  • 一次最多只能记录两件物品。
  • 如果选择录制项目,则必须从头到尾录制。

考虑到电视节目的数量及其开始/结束时间,DVR可以录制的最大节目数是多少?

例如:考虑6个程序: 它们的编写形式如下:

a b c。 a是程序编号,b是开始时间,c是结束时间

1 0 3

2 6 7

3 3 10

4 1 5

5 2 8

6 1 9

记录的最佳方式是将节目1和3背靠背录制,并将节目2和4背靠背录制。 2和4将与1和3一起录制。 这意味着程序的最大数量为4。

找到可记录的最大程序数的有效算法是什么?

1 个答案:

答案 0 :(得分:1)

这是贪婪算法的典型例子。

您可以为输入中的每个程序创建一个包含元组的数组。 现在,您按结束时间对此数组进行排序,然后从左向右开始。如果您可以选择下一个程序(您最多只能录制一个程序),则递增结果计数器并记住结束时间。对于另一个程序,如果可能,再次填充可用的插槽,否则,您无法记录它并可以丢弃它。

通过这种方式,您将获得可以在O(nlogn)时间内记录的最大程序数。