|
2750 / 2058 / 508
Регистрация: 17.02.2014
Сообщений: 9,486
|
||||||
Получение всех комбинаций элементов массива27.07.2018, 09:43. Показов 14895. Ответов 30
Метки нет (Все метки)
Время от времени возникает необходимость получить все комбинации элементов, какого либо набора.
Вот, пришло на ум, как относительно просто это сделать:
1
|
||||||
| 27.07.2018, 09:43 | |
|
Ответы с готовыми решениями:
30
Генерация всех возможных комбинаций из элементов массива Перебор всех комбинаций элементов массива в нескольких одномерных массивов Получение всевозможных комбинаций массива |
|
2750 / 2058 / 508
Регистрация: 17.02.2014
Сообщений: 9,486
|
|
| 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
|
|
|
2750 / 2058 / 508
Регистрация: 17.02.2014
Сообщений: 9,486
|
|
| 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-ого элемента массива без вычисления всех элементов (Ленивые вычисления)
Массивы: определение частного от деления суммы всех положительных элементов на количество всех отрицательных элементов массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|