Напишите программу, чтобы найти максимально возможный прямоугольник букв, чтобы каждая строка формировала слово (слева направо), и каждый столбец формирует слово (сверху вниз).
Я нашел этот интересный вопрос. Это не домашнее задание, хотя это может звучать как таковое. (Я не в школе). Я делаю это для удовольствия.
Пример
Из cat, car, ape, api, rep, tip мы получаем следующий прямоугольник (который является квадратом):
c a r a p e t i p
Моя первоначальная идея - создать какое-то дерево префикса, чтобы я мог получить все слова, начинающиеся с определенной строки. Это было бы полезно, если у нас уже есть 2 или более слова (либо чтение сверху вниз, либо слева направо), и нам нужно найти следующее слово для добавления.
Любые другие идеи?
Edit
Можно ли это сделать с помощью кубоида (3D-прямоугольник)?
Что делать, если для диагоналей нужны действительные слова (идея credit: user645466); как оптимизировать его алгоритм?