Перебор элементов массива.

Статус
В этой теме нельзя размещать новые ответы.

polkan14

Новичок
Предположим есть у нас массив
PHP:
$arr[] = 'a';
$arr[] = 'b';
$arr[] = 'c';
Тогда все возможные сочетания букв без повторения, c упорядочиванием по алфавиту и с ограничением по максимуму элементов массива будет 7
1. a
2. b
3. c
4. ab
5. ас
6. bc
7. abc
Получить подобное просто и в уме. Но если количество элементов массива неизвестно заранее - не представляю как это реализовать. Поэтому и прошу вашей помощи.
Дайте, пожалуйста, наводку хоть что гуглить...
 

polkan14

Новичок
Нет заморочек по сортировке этих 7-ми пунктов. Поэтому abc вполне может быть и 1. Необходимо чтобы присутвовало "abc", а не "acb" или "cba". Сортировка по алфавиту нужна внутри строк.
 

polkan14

Новичок
По условиям моей задачи может, ибо не запрещено. Страшного дядя прошу воздержаться от общения в этой теме. Другим, реально желающим мне помочь, буду рад.
Господа, мне условия поставленной задачи кажутся вполне прозрачными.
Есть числовой массив. Размер его неизвестен. Для простоты считаем что в каждом элементе массива - одна латинская буква и они не повторяются. Все его значения надо перебрать и получит на выходе несколько строк. Правила формирования строк. В строке все символы идут в алфавитном порядке. Максимальный размер строки ограничен количеством элементов массива. Минимальный - 1 символ. Каждый элемент массива внутри одной строки может повторяться один раз. В строке могут не присутвовать некоторые элементы массива. Цель - получить максимум возможных строк.
 

Фанат

oncle terrible
Команда форума
Вот теперь у тебя получилось.
Вот ведь молодёжь пошла - пока не пнёшь, даже вопрос задать толком не могут
 

rotoZOOM

ACM maniac
PHP:
function doit ($arr, $str, $idx)
{
    if ($idx >= count($arr)) return;
    echo $str.$arr[$idx]."\n";
    doit ($arr, $str.$arr[$idx], $idx+1);
    doit ($arr, $str, $idx+1);
}

$arr = array('a','b','c');
sort ($arr);
doit ($arr, '', 0);
Под рукой нет WAMP/LAMP не проверял, но должно работать.
 

Фанат

oncle terrible
Команда форума
craz, для брутфоса слишком большое ограничение на количество комбинаций.
И на говносео тоже не очень похоже.
Скорее всего, друг наш - двоечник, и с гордым видом понесет сегодня списанное решение в свое ПТУ :)
И я буду этому очень, очень рад ;)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху