一个框包含3个数字属性。属性是最大总(正常+稀有)对象,最大普通对象,最大稀有对象。现在让我们说,例如,我有4个盒子。
现在我必须将 8个普通对象和5个罕见对象放入这些框中。
我可以使用的最小盒子数量是多少?它们是什么盒子?以编程方式,我可以通过强力/递归搜索来实现这一点。找出所有可能的盒子组合后,我会根据盒子里浪费的最少空间对数组/列表进行排序。是否有一种更具编程效率或数学方法的方法来找出最少量的盒子?
答案 0 :(得分:1)
我认为一种有效的方式是:
假设您有“n”个框,“a”正常对象和“b”稀有对象以及> b。
X
。 Y
。 a>b
开始,填写列表X
中的最大框。 a
(剩余)是否> b
(剩余),如果是,则将它们放在列表X
中的下一个最大框中,否则将它们放在列表Y
中的下一个最大框中(如果填充的框也是最大的框)在列表Y
)中。 a
和b
为0
。虽然这并不总能为您提供所有案例的确切最小数量的盒子,但是对于大量的盒子来说通常都能很好地工作。