2015-05-24 88 views
0

我正在查看示例面試問題,並彈出了此選項。在第一個元素上獲得給定重量限制對的第二個元素的最大總和

該問題要求一個程序採用兩個數字,L(限制)和C(要輸入的案例數量)。之後,C量的整數對被輸入,其中該對由(權重,值)組成。

現在,程序應該給權重加起來小於或等於極限的最大可能值。

例如,如果有人輸入:

(10,4), (5,2), (1,1), (4,9), (5,7)

程序應該輸出17.第一對錶明權重限制爲10,並且將要輸入4個測試用例。接下來的四對是測試用例,最理想的組合是最後三種情況,因爲它們的權重合計爲< = 10,而值爲17,這是給定限制的最高可能值。

我一直在嘗試一段時間來解決問題,但我沒有找到一個非常有效的解決方案。到目前爲止,我採取的方法是找到加起來小於或等於極限的所有可能的權重,然後簡單地查看它們的所有總和,然後選擇最大值。但我覺得這是一個非常低效的解決方案,使用某種分類方法可能會更好。任何建議,將不勝感激。

回答

2

這是Knapsack Problem的一個實例。維基百科頁面列出了很多有效解決此問題的已知算法。你可能想從這些算法中收集一些靈感。

相關問題