[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Массивы
Страницы: 1, 2, 3
kaww
Цитата (Valick @ 17.08.2014 - 03:50)
вторая решается легко
, я вот что-то не могу легко решить. не поделишься своим решением?
kaww
Valick, действительно просто, а я - ламер smile.gif
FatCat
Цитата (Valick @ 18.08.2014 - 00:29)
должно быть решение рекурсией

Я думаю, ожидалось решение с разрядами.

Для понятности, пусть все цифры будут разные: [7+3+4+1]
1 - только один вариант - единица.
4 - может быть 4 (4+1), или 40 (41);
3 - и 3 (3+41 или 3+4+1), и 30 (34+1), и 300 (341).

Таким образом легко собирается массив вариантов.

_____________
Бесплатному сыру в дырки не заглядывают...
Valick
FatCat, я ничего не понял smile.gif, давайте код

_____________
Стимулятор ~yoomoney - 41001303250491
FatCat
Попробовал написать код, и увидел еще более простой вариант:
$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
)


_____________
Бесплатному сыру в дырки не заглядывают...
Семён
FatCat, не проверял код, но если это работает user posted image
Valick
FatCat, браво!


_____________
Стимулятор ~yoomoney - 41001303250491
FatCat
user posted image

_____________
Бесплатному сыру в дырки не заглядывают...
inpost
Красавчики, если не читеры!

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Alchemist
FatCat, действительно красиво :) Я решал в лоб - рекурсией...
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;
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.