2017-02-11 65 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

然後你可以使用你貪婪的方法。