例如:
$groups = [
['name' => 'Group 1', 'items' => [1]],
['name' => 'Group 2', 'items' => [1,2]],
['name' => 'Group 3', 'items' => [1,2,3,4,5,6]],
['name' => 'Group 4', 'items' => [1,2,3]],
['name' => 'Group 5', 'items' => [5,6]],
['name' => 'Group 6', 'items' => [5]],
];
应该分成包含大约相同数量元素的数组。如果减半,则:
[
[
['name' => 'Group 1', 'items' => [1]],
['name' => 'Group 2', 'items' => [1,2]],
['name' => 'Group 4', 'items' => [1,2,3]],
['name' => 'Group 5', 'items' => [5,6]],
],
[
['name' => 'Group 3', 'items' => [1,2,3,4,5,6]],
['name' => 'Group 6', 'items' => [5]],
]
];
当您在列中显示列表(例如,菜单)时,这很方便,并且您需要避免出现空白区域。
经典的背包问题。
由于领域不一定需要最优解,可以尝试贪心算法。那些。我们按降序对数组中元素数量的向量进行排序,然后开始分解为两个(或更多 - 取决于你需要划分多少部分)向量,将下一个元素放入向量中当前总和较小的位置。