有一种线性时间算法(或 Knuth & Plass 的二次时间算法)用于将文本均匀地分成最大宽度的行。它使用 SMAWK,“均匀”意味着:
http://en.wikipedia.org/wiki/Word_wrap#Minimum_raggedness
是否有算法或上面算法的凹成本函数会考虑我希望文本分成的行数,而不是最大行宽?
换句话说,我正在寻找一种换行(或段落形成或自动换行)算法,其中输入是所需的行数,而不是所需的线宽。
只是描述一个实际上不可用的方法:每个单词对之间有 N 个单词和 N-1 个空格,M 是所需的行数 (M <= N)。在每个空格之后可能最多有一个(可能为零)换行符。现在,该算法将尝试在每个可能的组合中放置中断,计算“不规则度”并返回最佳组合。如何更快地做到这一点?
最佳答案
通过将最大长度计算为字符串的总长度除以所需的行数,您可以简单地将实现给定行数的问题简化为在最大长度后换行的问题。由于在许多情况下一行的实际长度将小于最大长度,因此您可能需要从所需的行数中减去 1。
关于algorithm - 将文本均匀地分成一定数量的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9515867/