21,886
社区成员
发帖
与我相关
我的任务
分享
function getSumNum($arr , $total)
{
sort($arr);
$result = [];
while (($value = array_shift($arr)) !== null){
if ($value < $total) {
$res = getSumNum($arr, $total - $value);
if ($res) {
$res = array_map(function ($v) use ($value){
array_unshift($v, $value);
return $v;
}, $res);
$result = array_merge($result, $res);
}
} elseif ($value == $total) {
$result[] = [$value];
} else {
break;
}
}
return $result;
}
$_arr = array(0,1, 2, 3, 4,5);
$data = getSumNum($_arr, 8);
array_map(function ($v){
var_dump(implode(',', $v));
}, $data);
执行结果
string(7) "0,1,2,5"
string(7) "0,1,3,4"
string(5) "0,3,5"
string(5) "1,2,5"
string(5) "1,3,4"
string(3) "3,5"
是要这个结果吗?
随便写的,不一定正确。要使用请验证