Разбивка строк

1) Уточнения по условию

Поскольку условие местами размыто, то сделал такие допуски:
- предполагается, что должно быть минимально возможное количество абзацев (из требования максимально заполнить каждый из них).
- из того же требования убираем все двойные пробелы, а так же пробелы перед переносом строки (по условию не запрещается). В стандартном случае, когда у нас обычный текст, в котором слова разделены одинарными пробелами, ничего убирать не придется.
- для некой субъективной "сбалансированности" минимизируем сумму квадратов отклонений от некой средней длины абзаца - что за средняя длина, выяснится далее.
- непонятно, что делать со словами, которые длиннее чем заданное ограничение. На всякий случай сделал галку "переносить", которая переносит слова стандартным образом, разбивая на равные куски и остаток в конце. Без этой галки слова просто вылазят за ограничение.
- если в исходной строке уже есть переносы строк, то они игнорируются и считаются пробелами, опять же по требованию максимального заполнения.

2) Решение


Ограничение: