让我们说我有一些像这样的数据:
var boxes = [
{
name: 'Box 1',
weight: 2,
},
{
name: 'Box 2',
weight: 5,
},
{
name: 'Box 3',
weight: 4,
},
// Some more boxes
]
是否存在某种功能将这些boxes
分成较小的数组,您可以在其中定义每个数组的最小和最大总重量?例如:将boxes
分成多个数组,每个数组的总权重在8到10之间,或者如果没有办法像这样将它们分开,则返回false
? >
例如:仅考虑数字/权重,结果将如下所示:
// Boxes with weights 7, 6, 5, 5, 5, 5, 4, 4, 4, 3, 2, 1
[
[7, 1], // Total: 8
[6, 2], // Total: 8
[5, 3], // Total: 8
[5, 5], // Total: 10
[5, 4], // Total: 9
[4, 4] // Total: 8
]
// Boxes with weights 5, 4, 5, 6, 7
[
[5, 5], // Total: 10
[4, 6], // Total: 10
[7], // --> Total lower than minimum (8), function should return false
]
主要是我很难找到逻辑。尽管不是100%的防故障能力,但我有一种获得最大成功的方法。 (有时会说不同权重的组合是不可能的,尽管最小值和最大值是不可能的):