2016-01-20 45 views
2

一個對話框包含3個數值屬性。的屬性是最大(正常+罕見的)對象,最大正常目的,最大罕見對象。現在讓我們來舉個例子,我有4個盒子。算法,以儘量減少盒和最大化對象

  • 方框1:最多5個物體,最多4個標準物體,最多2個稀有物體。方框2:最多10個,最多9個,最多3個。方框3:最多8個,最多5個,最多4個。
  • 方框4:最多4個,最多4個正常,最多1個。

現在我必須把8個正常物體和5個稀有物體放到這些盒子裏。

什麼是盒子,我可以使用,什麼箱子是他們的最低金額是多少?以編程方式,我可以通過蠻力/遞歸搜索來實現這一點。在找出所有可能的盒子組合後,我會根據盒子中浪費的最少空間對數組/列表進行排序。有沒有更有效的方法或數學方法來找出最小數量的盒子?

+0

目標是什麼?最小框或最小「浪費空間」? – Amit

+0

實際上,我正在考慮返回一個箱子組合列表。遍歷這個列表來找出這些框的最小「浪費空間」。但是,主要目標是找到最小方框。 (回答你的問題) – user859385

+2

確定性算法需要一個特定的目標。你必須決定這個目標是什麼。所有的 – Amit

回答

1

我認爲一種有效的方式是:
假設你有「n」個盒子,「a」是普通物體,「b」是稀有物體,a> b。

  1. 根據普通對象中的屬性最大空間對列表中的所有框進行排序。打電話給這個名單X
  2. 根據屬性max,對另一個列表中的所有框進行排序。空間在罕見的對象。撥打此列表Y
  3. 由於a>b,填寫列表X最大的箱。
  4. 檢查a(剩餘)>b(剩餘),如果是把它們放在一個最大的框列表X,否則將它們放在一個最大的框列表Y(如果充滿盒子也是在列表中的最大的盒子Y)。
  5. 繼續這樣做,直到雙方ab0

這不會永遠給你的盒子對所有案件的確切最低數量,雖然,但通常會工作得很好用大量的箱子。

+0

感謝您的編輯,看起來更整潔 – novice

+0

沒問題 - 點擊「編輯x前」鏈接,看看我如何格式化它。當你掌握它時很容易。 – Mogsdad

+0

感謝您的提示! – novice