问题:
具有数值的数组需要被分成两半,大约相等或者如果可能的话,相等的数组和.数组中元素的数量或顺序并不重要.
$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
Run Code Online (Sandbox Code Playgroud)
有什么建议?
谢谢.
像这样?
<?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);
Run Code Online (Sandbox Code Playgroud)