Похоже, что довольно приземлённый откат подойдет.Начните с начала строки.Сканируй прямо, пока не получишь слово.Затем вызовите функцию для остальной части строки.Функция возвращает «ложь», если она сканирует весь путь вправо, не распознавая слово.В противном случае возвращает найденное слово и список слов, возвращаемых рекурсивным вызовом.
Пример: "tableapple".Находит «tab», затем «прыжок», но нет слова в «ple».Нет другого слова в "Леапле".Находит «стол», затем «приложение».«le» не слово, поэтому пытается apple, распознает, возвращает.
Чтобы получить максимально возможный результат, продолжайте, только испуская (а не возвращая) правильные решения;затем выберите оптимальный по любому критерию (максимальный, минимальный, средний и т. д.)