1

我想将数组中值的不同组合与特定数字相匹配。

例如:

number = 10

Array (2, 6, 5, 3, 4)

比赛将返回 : 6 + 4 = 10,2 + 3 + 5 = 10

我可以遍历所有可能的组合,但有没有更快或更简单的方法来解决我的问题?

4

1 回答 1

0

答案有一个小问题,它返回所有组合,即 2,3,5 和 3,2,5 等。

<?php

$array = array(2, 6, 5, 3, 4);

function depth_picker($arr, $temp_string, &$collect) {
    if ($temp_string != "") 
        $collect []= $temp_string;

    for ($i=0; $i<sizeof($arr);$i++) {
        $arrcopy = $arr;
        $elem = array_splice($arrcopy, $i, 1); // removes and returns the i'th element
        if (sizeof($arrcopy) > 0) {
            depth_picker($arrcopy, $temp_string ."," . $elem[0], $collect);
        } else {
            $collect []= $temp_string. "," . $elem[0];
        }   
    }   
}

$collect = array();
depth_picker($array, "", $collect);
foreach($collect as $val)
{
   $sum  = array_sum(explode(",",$val));
   if($sum == 10){
      print_r($val);
      echo "<br>";
   }
}

?>
于 2013-02-11T09:52:44.617 回答