Форум по Delphi программированию

 



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ] > Код на шару!
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.11.2020, 03:36
alexperm77 alexperm77 вне форума
Прохожий
 
Регистрация: 17.11.2020
Сообщения: 1
Версия Delphi: Delphi 10.3
Репутация: 10
По умолчанию Генератор комбинаций

Есть произвольное количество строк с произвольным количеством символов (например в memo). Необходимо вывести (например в другое memo) все возможные комбинации таким образом: первый символ может быть любым из первой строки, второй - любым из второй и т.д.

условно имеем:

123
456
789

должны получить:
147
148
149
157
158
159
167
168
169
247
248
249
257
258
259
267
268
269
347
348
349
357
358
359
367
368
369

помогите пожалуйста, с ходу не придумал как накидать произвольное кол-во вложенных циклов.
Ответить с цитированием
  #2  
Старый 18.11.2020, 11:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,607
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Это одна из задач, решаемых с помощью динамического программирования. Т.е. тебе нужно организовать некоторую дополнительную структуру данных и алгоритм, обрабатывающий эту струкруру для достижения нужного результата.
Например (лень писать полный код):
1. создаем массив Integer, кол-во элементов равное кол-ву строк в Memo.
2. инициируем каждый элемент единичкой.
3. Теперь делаем 1 цикл который берет число из последний ячейки, по нему выбираем цифру из соотв. строки Memo. Если это последнее число, то переставляем на начало и увеличиваем счетчик следующей ячейки, а текущую сбрасываем в начальное значение. Так вот и перебираем, пока не переберем все, т.е. пока не потребуется переставить на начало самую первую ячейку.

Может сумбурно объяснил...
Да, это все из предположения, что длинна всех строк одинаковая. Если разная, то надо еще доп. ограничеие добавить, т.е. массив будет не просто из счетчиков, но и еще и хранить длинну строки для контроля.
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:54.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2020

ВКонтакте   Facebook   Twitter