我参加了一年级的编程课程,这是一个作业问题,所以我很欣赏一些指示,但不是答案。
问题是,给定一些有序元素的列表,如何将它们插入给定的有序范围,以便最大数量的元素被插入? (范围和元素的数量不一定相等)
给出了这个示例输入:
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)。 我不太确定如何继续 - 我会非常感激一两个提示!
答案 0 :(得分:1)
您可以使用maximum bipartite matching来解决此问题。
编辑: 或者,您可以按第二个值按升序对范围进行排序。
实施例: 范围:0-7,2-3将是2-3,0-7
然后你可以使用贪婪的方法。