Алгоритм выравнивания текста (влево и вправо)
Я ищу способ реализовать выравнивание текста (влево и вправо). Каждая строка вывода может иметь максимальную ширину M символов. Разбиение слов не допускается.
Например, см. "Обосновано (влево и вправо)" на этой странице википедии: http://en.wikipedia.org/wiki/Justification_(typesetting).
Я знаю, что есть решение для динамического программирования для оптимального выравнивания по левому краю, выравнивания по неровному краю, т. Е. Равномерного распределения лишних пробелов в конце строк так, чтобы стоимость лишних пробелов была оптимальной (это также известно как перенос слов "проблема или" аккуратная печать "проблема). Однако я не могу прийти к динамическому программированию или жадному подходу для решения проблемы полнотекстового выравнивания.
Поиск в Google привел меня к обоснованию текста на основе Марковского программирования цепей: http://www.rose-hulman.edu/Users/faculty/young/OldFiles/CS-Classes/csse220/200820/web/Programs/Markov/justification.html. Но это кажется сложным для меня. Если это лучшее (и самое простое) решение проблемы полнотекстового выравнивания, то было бы здорово, если бы кто-то мог объяснить то же самое простыми словами.