将数组拆分为一半,具有相等或近似相等的数组和

Dej*_*vic 2 php arrays

问题:

具有数值的数组需要被分成两半,大约相等或者如果可能的话,相等的数组和.数组中元素的数量或顺序并不重要.

$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)

有什么建议?

谢谢.

The*_*ter 7

像这样?

<?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)