考虑一台有责任录制电视节目的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。
找到可记录的最大程序数的有效算法是什么?
答案 0 :(得分:1)
这是贪婪算法的典型例子。
您可以为输入中的每个程序创建一个包含元组的数组。 现在,您按结束时间对此数组进行排序,然后从左向右开始。如果您可以选择下一个程序(您最多只能录制一个程序),则递增结果计数器并记住结束时间。对于另一个程序,如果可能,再次填充可用的插槽,否则,您无法记录它并可以丢弃它。
通过这种方式,您将获得可以在O(nlogn)时间内记录的最大程序数。