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

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

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