Цитата (Valick @ 17.08.2014 - 03:50) |
вторая решается легко |
Цитата (Valick @ 18.08.2014 - 00:29) |
должно быть решение рекурсией |
$inp = array(7,3,4,1);
$res = array($inp[0]);
for($i=1;$i<count($inp);$i++)
{
foreach($res as $k=>$v)
{
$res[$k] = $v."+".$inp[$i];
$res[] = $v.$inp[$i];
}
}
foreach($res as $k=>$v)
{
eval("\$res[\$v] = $v;");
unset($res[$k]);
}
Array
(
[7+3+4+1] => 15
[73+4+1] => 78
[7+34+1] => 42
[734+1] => 735
[7+3+41] => 51
[73+41] => 114
[7+341] => 348
[7341] => 7341
)
function checkNum($array, $sum)
{
if ($sum == 0 && count($array) == 0)
return array();
if ($sum > 0)
for($curr = 0; count($array); ){
$curr = $curr * 10 + array_shift($array);
if (is_array($res = checkNum($array, $sum - $curr)))
return array_merge(array($curr),$res);
}
return false;
}