2017-02-11 74 views
1

我正在第一年编程课程,这是一个分配的问题比赛,所以我会很感激几个指针,但是没有答案。如何优化到的范围。(作业)

的问题是,给予一定的数量排序的元素的列表,你怎么插槽他们到给定的命令范围,以致元素的最大数量的开槽? (范围和元件的数量不一定相同)

该实施例输入给定:

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。

我到目前为止已经试过是尝试一个贪婪的方法。这似乎失败,因为有很多情况下,这是行不通的,例如:第一个插槽2

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

处理元素成0-7,但随后5无处可去(和它的经查清楚最大值是2)。 我不太确定如何继续 - 提示或两个将不胜感激!

+0

对于第一个示例答案应该是2,你可以用2-5,3-9的所有号码可以在这两个范围开槽。我对吗 ? –

+0

也有一些错别字,在你的解释中你已经使用了范例,这些不在这个例子中。 –

回答

1

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

编辑: 或者你可以排序由第二个值升序的范围。

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

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