【发布时间】:2010-11-18 16:20:37
【问题描述】:
$a = array(8, 16, 16, 32, 8, 8, 4, 4);
对于像上面这样的数组,有一种方法可以根据总和为设定值的值划分/拆分数组。例如,如果我希望它们等于 32。我的最终数组将有多达 100 个值,它们都是 32、16、8 或 4,我只需要将项目分组,因此值始终等于设定的数量,因此在本例中为 32。
我希望从上面的数组中得到:
$a[0][1] = 16
$a[0][2] = 16
$a[1][3] = 32
$a[2][0] = 8
$a[2][4] = 8
$a[2][5] = 8
$a[2][6] = 4
$a[2][7] = 4
$a[0] 的总和为 32,$a[1] 和 $a[2] 也是如此。
【问题讨论】:
-
为什么你会得到
[[16,16],[32],[8,8,8,4,4]]而不是[[32], [8,8,16], [4,4,8,16]]?还是没关系? -
不管组是由什么组成的,只要它们的总和为 32,抱歉造成混淆。
-
第二 - 只要总计 32 个,它们的组合方式是否重要?如果总数不是 32 的倍数怎么办?
-
看起来像一个魔方:en.wikipedia.org/wiki/Magic_square
-
如果有一个多余的东西不能成倍增加,那么只要在最后一个单独的元素中看到它就好了。但是,是的,您完全正确,只要它们的总和为 32,它的组中的哪些项目并不重要。理想情况下,分组越随机越好,因为这些值是报纸中广告的大小。