如何优化范围匹配(作业)

时间:2017-02-11 06:22:53

标签: c++ algorithm

我参加了一年级的编程课程,这是一个作业问题,所以我很欣赏一些指示,但不是答案。

问题是,给定一些有序元素的列表,如何将它们插入给定的有序范围,以便最大数量的元素被插入? (范围和元素的数量不一定相等)

给出了这个示例输入:

Elements: 2, 6, 7, 8, 9
Ranges: 0-3, 2-5, 3-9, 8-10

此输出为3,因为2将插入2-5(或0-3),6/7将插入4-9,而9将插入8-13。

到目前为止,我尝试过的是尝试一种贪婪的方法。这似乎失败了,因为有很多情况它不起作用,例如:

Elements: 2, 5
Ranges: 0-7, 2-3

将元素第一个插槽2处理成0-7,但是5无处可去(并且在检查时它的最大值为2)。 我不太确定如何继续 - 我会非常感激一两个提示!

1 个答案:

答案 0 :(得分:1)

您可以使用maximum bipartite matching来解决此问题。

编辑: 或者,您可以按第二个值按升序对范围进行排序。

实施例: 范围:0-7,2-3将是2-3,0-7

然后你可以使用贪婪的方法。