|
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
|
||||||
Получение всех комбинаций элементов массива27.07.2018, 09:43. Показов 14817. Ответов 30
Метки нет (Все метки)
Время от времени возникает необходимость получить все комбинации элементов, какого либо набора.
Вот, пришло на ум, как относительно просто это сделать:
1
|
||||||
| 27.07.2018, 09:43 | |
|
Ответы с готовыми решениями:
30
Генерация всех возможных комбинаций из элементов массива Перебор всех комбинаций элементов массива в нескольких одномерных массивов Получение всевозможных комбинаций массива |
|
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
|
|
| 27.07.2018, 10:16 [ТС] | |
|
1
|
|
| 27.07.2018, 10:17 | |
|
Не по теме: тогда зачот! :good:
0
|
|
|
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
|
||||||
| 27.07.2018, 23:18 | ||||||
Сообщение было отмечено Aviz__ как решение
Решение
Как вариант для клиента-супостата.
2
|
||||||
|
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
|
||||||||||||||||
| 28.07.2018, 19:23 | ||||||||||||||||
|
Это моя реализация, коряво наверно ) но работает и тоже под любой массив универсальный
Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
a b c d f
a b c f d a b d c f a b d f c a b f c d a b f d c a c b d f a c b f d a c d b f a c d f b a c f b d a c f d b a d b c f a d b f c a d c b f a d c f b a d f b c a d f c b a f b c d a f b d c a f c b d a f c d b a f d b c a f d c b b a c d f b a c f d b a d c f b a d f c b a f c d b a f d c b c a d f b c a f d b c d a f b c d f a b c f a d b c f d a b d a c f b d a f c b d c a f b d c f a b d f a c b d f c a b f a c d b f a d c b f c a d b f c d a b f d a c b f d c a c a b d f c a b f d c a d b f c a d f b c a f b d c a f d b c b a d f c b a f d c b d a f c b d f a c b f a d c b f d a c d a b f c d a f b c d b a f c d b f a c d f a b c d f b a c f a b d c f a d b c f b a d c f b d a c f d a b c f d b a d a b c f d a b f c d a c b f d a c f b d a f b c d a f c b d b a c f d b a f c d b c a f d b c f a d b f a c d b f c a d c a b f d c a f b d c b a f d c b f a d c f a b d c f b a d f a b c d f a c b d f b a c d f b c a d f c a b d f c b a f a b c d f a b d c f a c b d f a c d b f a d b c f a d c b f b a c d f b a d c f b c a d f b c d a f b d a c f b d c a f c a b d f c a d b f c b a d f c b d a f c d a b f c d b a f d a b c f d a c b f d b a c f d b c a f d c a b f d c b a
0
|
||||||||||||||||
|
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
|
|
| 28.07.2018, 21:40 | |
|
WinniPuh, Combin, Combo, comBinator - с именами проблема.
Глядя на код без объяснений даже не знаю сколько времени надо, чтоб понять что там происходит.
0
|
|
|
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
|
|
| 29.07.2018, 11:02 | |
|
Я согласен с вашими замечаниями.
Добавлено через 5 часов 20 минут вообщем в итераторе я организовал чтобы в бесконечном цикле ходить по массиву искать следующуюю итерацию а один из классов содержит базу готовых комбинаци элементов, у вас то конечно круче, я тоже думал про очередь но ума не хватило, вы двигатесь по очереде и уаляете последнй элемент и ищите следующую комбинацию, как-то подобное делал когда оргинизовывал итерацию дерева.
0
|
|
|
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
|
|
| 29.07.2018, 11:29 [ТС] | |
|
WinniPuh, Алгоритм Джонсона-Троттера, имхо, этот красивее и тащить в каждую итерацию ничего не нужно.
0
|
|
|
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
|
||||||
| 29.07.2018, 11:39 | ||||||
|
только у меня вопрос у меня в голове не укладывается как срабатывает строчка
indexes.removeLast();
0
|
||||||
|
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
|
|||
| 30.07.2018, 11:01 | |||
|
0
|
|||
|
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
|
|
| 30.07.2018, 16:35 | |
|
https://ibb.co/eWjQpT скриншёт 1
https://ibb.co/jB9x3o скриншёт 2 вот какого он обратно лезет в этот блок? и на скринах вино что оба цикла завершены и всёравно потом заходит команда делете ласт почему она туда заходит и ещё я закоментил return и всравно всё прекрасно работает. есть тут те кто может ответить на вопрос: 1.КАК??? КАК СРОБАТЫВАЕТ КОМАНДА indexes.removeLast(); ЕСЛИ ОНА НАХОДИТСЯ В БЛОКЕ if (!indexes.contains(i)) , КОТОРЫЙ В СВОЮ ОЧЕРЕДЬ НАХОДИТСЯ В БЛОКЕ ЦИКЛА КОТОРЫЙ УЖЕ ЗАВЕРШИЛСЯ? 2. НА КОЙ НАМ НУЖЕН RETURN Я ЕГО ЗАКОМЕНТИЛ ВСЁРАВНО ВСЁ ИСПРАВНО РАБОТАЕТ, ЕСЛИ ЭТО ПРОСТО ОЧИПЯТКА АФФТОРА ТО ТАК И СКАЖИТЕ А ТО ОНО НА ТО И ПОХОЖЕ 3. КАК? КАК ПРОВЕРЯЕТСЯ УСЛОВИЕ ОСТАНОВКИ ВСЕГО ЭТОГО КАКИЕ ЗВЁЗДЫ СХОДЯТСЯ ЧТОБЫ ЦИКЛЫ ОСТАНОВИЛИСЬ Я ПОНЯТЬ НЕ МОГУ. это не моя вредность, просто реально это как - то странно работает но оно работает и я хочу понять как???
0
|
|
|
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
|
|||||||
| 30.07.2018, 16:44 | |||||||
|
WinniPuh, Вы знаете что такое рекурсия?
На скринах слева внизу показан стек вызовов (Frames). Видите отличие в [5]? Работает это как вызвали make, если длина меньше желаемой, то из make вызвыли make. Если длина меньше желаемой, то из make->make вызвали еще одни make. Если длина равна желаемой, то возвращаемся назад (в make->make). Добавьте первой строкой в make
0
|
|||||||
|
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
|
|
| 30.07.2018, 17:02 | |
|
я это понял что если длинна меньше желаемой. то в консоль ничего не выводит сама рекурсия у тебя срабатывает кога ты говоришь
make(arr, indexes, expectedSize) return - тут ни на что не влияет я сверил глазами консоль вывод одинаковый с команой ретурн разобрались, ято всё же очипятка меня интересует только одн как сходятся звёзды чтобы сробатывала команда indexes.removeLast(); и где тут стоит проверка что пора остановить работу программы ,? https://ibb.co/e2MuzT https://ibb.co/d1wito Добавлено через 31 секунду я это понял что если длинна меньше желаемой. то в консоль ничего не выводит сама рекурсия у тебя срабатывает кога ты говоришь make(arr, indexes, expectedSize) return - тут ни на что не влияет я сверил глазами консоль вывод одинаковый с команой ретурн разобрались, ято всё же очипятка меня интересует только одн как сходятся звёзды чтобы сробатывала команда indexes.removeLast(); и где тут стоит проверка что пора остановить работу программы ,? https://ibb.co/e2MuzT https://ibb.co/d1wito
0
|
|
|
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
|
||||||||
| 30.07.2018, 17:10 | ||||||||
0
|
||||||||
|
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
|
|
| 30.07.2018, 17:26 | |
|
Добавлено через 9 минут
ладно позже вернусь к этому решению когда поумнею..чёт всёравно е пойму.
0
|
|
|
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
|
||||||||
| 30.07.2018, 17:28 | ||||||||
Кликните здесь для просмотра всего текста
0
1 2 3 a b c 3 a b d 2 3 a c b 3 a c d 2 3 a d b 3 a d c 1 2 3 b a c 3 b a d 2 3 b c a 3 b c d 2 3 b d a 3 b d c 1 2 3 c a b 3 c a d 2 3 c b a 3 c b d 2 3 c d a 3 c d b 1 2 3 d a b 3 d a c 2 3 d b a 3 d b c 2 3 d c a 3 d c b Вывод без return Кликните здесь для просмотра всего текста
0
1 2 3 a b c 4 3 a b d 4 2 3 a c b 4 3 a c d 4 2 3 a d b 4 3 a d c 4 1 2 3 b a c 4 3 b a d 4 2 3 b c a 4 3 b c d 4 2 3 b d a 4 3 b d c 4 1 2 3 c a b 4 3 c a d 4 2 3 c b a 4 3 c b d 4 2 3 c d a 4 3 c d b 4 1 2 3 d a b 4 3 d a c 4 2 3 d b a 4 3 d b c 4 2 3 d c a 4 3 d c b 4 С return максимальный размер indexes будет равен expectedSize, а без - размеру strBox
0
|
||||||||
|
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
|
|
| 30.07.2018, 17:33 | |
|
блин да как так то а у меня что с ретурн что без всё чётко выводит
0
|
|
|
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
|
|||
| 30.07.2018, 17:36 | |||
|
0
|
|||
|
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
|
||||||||
| 30.07.2018, 17:50 | ||||||||
|
что с ретурн что без ретурн у тебя if (indexes.size() == expectedSize) ты задал 4 он всегда будет проверять на 4 и пофиг на команду ретурн
я вот даже добавил символ и задал 5 он всегда выводит только 5 сиволов потому что идёт проверка это логично это выводится без ретурна это логично ретурн личшее Кликните здесь для просмотра всего текста
0
1 2 3 4 5 a b c d f 4 5 a b c f d 3 4 5 a b d c f 4 5 a b d f c 3 4 5 a b f c d 4 5 a b f d c 2 3 4 5 a c b d f 4 5 a c b f d 3 4 5 a c d b f 4 5 a c d f b 3 4 5 a c f b d 4 5 a c f d b 2 3 4 5 a d b c f 4 5 a d b f c 3 4 5 a d c b f 4 5 a d c f b 3 4 5 a d f b c 4 5 a d f c b 2 3 4 5 a f b c d 4 5 a f b d c 3 4 5 a f c b d 4 5 a f c d b 3 4 5 a f d b c 4 5 a f d c b 1 2 3 4 5 b a c d f 4 5 b a c f d 3 4 5 b a d c f 4 5 b a d f c 3 4 5 b a f c d 4 5 b a f d c 2 3 4 5 b c a d f 4 5 b c a f d 3 4 5 b c d a f 4 5 b c d f a 3 4 5 b c f a d 4 5 b c f d a 2 3 4 5 b d a c f 4 5 b d a f c 3 4 5 b d c a f 4 5 b d c f a 3 4 5 b d f a c 4 5 b d f c a 2 3 4 5 b f a c d 4 5 b f a d c 3 4 5 b f c a d 4 5 b f c d a 3 4 5 b f d a c 4 5 b f d c a 1 2 3 4 5 c a b d f 4 5 c a b f d 3 4 5 c a d b f 4 5 c a d f b 3 4 5 c a f b d 4 5 c a f d b 2 3 4 5 c b a d f 4 5 c b a f d 3 4 5 c b d a f 4 5 c b d f a 3 4 5 c b f a d 4 5 c b f d a 2 3 4 5 c d a b f 4 5 c d a f b 3 4 5 c d b a f 4 5 c d b f a 3 4 5 c d f a b 4 5 c d f b a 2 3 4 5 c f a b d 4 5 c f a d b 3 4 5 c f b a d 4 5 c f b d a 3 4 5 c f d a b 4 5 c f d b a 1 2 3 4 5 d a b c f 4 5 d a b f c 3 4 5 d a c b f 4 5 d a c f b 3 4 5 d a f b c 4 5 d a f c b 2 3 4 5 d b a c f 4 5 d b a f c 3 4 5 d b c a f 4 5 d b c f a 3 4 5 d b f a c 4 5 d b f c a 2 3 4 5 d c a b f 4 5 d c a f b 3 4 5 d c b a f 4 5 d c b f a 3 4 5 d c f a b 4 5 d c f b a 2 3 4 5 d f a b c 4 5 d f a c b 3 4 5 d f b a c 4 5 d f b c a 3 4 5 d f c a b 4 5 d f c b a 1 2 3 4 5 f a b c d 4 5 f a b d c 3 4 5 f a c b d 4 5 f a c d b 3 4 5 f a d b c 4 5 f a d c b 2 3 4 5 f b a c d 4 5 f b a d c 3 4 5 f b c a d 4 5 f b c d a 3 4 5 f b d a c 4 5 f b d c a 2 3 4 5 f c a b d 4 5 f c a d b 3 4 5 f c b a d 4 5 f c b d a 3 4 5 f c d a b 4 5 f c d b a 2 3 4 5 f d a b c 4 5 f d a c b 3 4 5 f d b a c 4 5 f d b c a 3 4 5 f d c a b 4 5 f d c b a
0
|
||||||||
| 30.07.2018, 17:50 | |
|
Помогаю со студенческими работами здесь
20
Получение i-ого элемента массива без вычисления всех элементов (Ленивые вычисления)
Массивы: определение частного от деления суммы всех положительных элементов на количество всех отрицательных элементов массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во
всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
|