最小化框和最大化对象的算法

时间:2016-01-20 17:37:45

标签: algorithm

一个框包含3个数字属性。属性是最大(正常+稀有)对象,最大普通对象,最大稀有对象。现在让我们说,例如,我有4个盒子。

  • 方框1:最多5个物体,4个最大普通物体,2个最大稀有物体。
  • 方框2:最多10个,最大9个,最多3个。
  • 方框3:最多8个,最多5个,最多4个。
  • 方框4:最多4个,最大4个,最大1个。

现在我必须将 8个普通对象和5个罕见对象放入这些框中。

我可以使用的最小盒子数量是多少?它们是什么盒子?以编程方式,我可以通过强力/递归搜索来实现这一点。找出所有可能的盒子组合后,我会根据盒子里浪费的最少空间对数组/列表进行排序。是否有一种更具编程效率或数学方法的方法来找出最少量的盒子?

1 个答案:

答案 0 :(得分:1)

我认为一种有效的方式是:
假设您有“n”个框,“a”正常对象和“b”稀有对象以及> b。

  1. 根据普通对象中的属性最大空间对列表中的所有框进行排序。请拨打此列表X
  2. 根据属性max对另一个列表中的所有框进行排序。稀有物体的空间。请拨打此列表Y
  3. a>b开始,填写列表X中的最大框。
  4. 检查a(剩余)是否> b(剩余),如果是,则将它们放在列表X中的下一个最大框中,否则将它们放在列表Y中的下一个最大框中(如果填充的框也是最大的框)在列表Y)中。
  5. 继续这样做,直到ab0
  6. 虽然这并不总能为您提供所有案例的确切最小数量的盒子,但是对于大量的盒子来说通常都能很好地工作。