Problem:
具有数值的数组需要分成两半,数组总和大约相等或可能相等。数组中元素的数量或顺序并不重要。
$probabilites = array(0.4, 0.15, 0.1, 0.1, 0.2, 0.2, 0.3); # 1.45
$probabilites[0] = array(0.4, 0.15, 0.1, 0.1); # 0.75
$probabilites[1] = array(0.2, 0.2, 0.3); # 0.7
有什么建议么?
Thanks.
像这样?
<?php
$in = array(0.4, 0.15, 0.1, 0.1, 0.2, 0.2, 0.3);
// Sort array decreasing
rsort($in, SORT_NUMERIC);
// Start with two empty arrays
$arr1 = $arr2 = array();
// Put the next value in the array in the array with the lowest sum
foreach ($in as $value)
if (array_sum($arr2) > array_sum($arr1)) $arr1[] = $value; else $arr2[] = $value;
// Wrap in array (as in question)
$out = array($arr1,$arr2);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)