从数组中取出任意个数,求和为指定值的解 PHP
<?php
/**
* @param array $cc 所需数组
* @param int $val 指定值
* @return array
*/
function demo($cc,$val){
for ($i = 1; $i < 1 << count($cc); $i++) {
$sum = 0;
$temp = "";
for ($j = 0; $j <count($cc); $j++) {
if (($i & 1 << $j) != 0) {
$sum += $cc[$j];
$temp .= $cc[$j]."+";
}
}
if ($sum == $val) {
$arr[] = trim($temp,'+');
}
}
return $arr;
}
$cc = array(1,9,34,56,10,7,3,28,9);
echo "<pre>";
print_r(demo($cc,100));
//打印出的结果
/*
Array
(
[0] => 1+9+34+56
[1] => 34+56+10
[2] => 34+56+7+3
[3] => 9+56+7+28
[4] => 1+34+56+9
[5] => 56+7+28+9
[6] => 9+34+10+7+3+28+9
)
*/
注意:此方法只适用于小型的数组