将文本均匀分解为一定数量的行

时间:2012-03-01 12:03:52

标签: algorithm computer-science line-breaks

有一种线性时间算法(或Knuth& Plass的二次时间算法)可将文本均匀地分解为最大宽度的行。它使用SMAWK并且“均匀”意味着:
http://en.wikipedia.org/wiki/Word_wrap#Minimum_raggedness

上面的算法是否有算法或凹成本函数,它会考虑我希望文本分成的行数,而不是最大行宽?

换句话说,我正在寻找换行(或段落形成或自动换行)算法,其中输入是所需的行数,而不是所需的行宽。

仅描述实际上不可用的方法:在每个字对之间存在N个字和N-1个空格,M是期望的行数(M <= N)。在每个空格之后,最多可能有一个(可能为零)换行符。现在,该算法将尝试将断点放在每个可能的组合中,计算“粗糙度”并返回最佳值。怎么做得更快?

1 个答案:

答案 0 :(得分:0)

通过计算最大长度作为字符串的总长度除以所需的行数,您可以简单地减少实现给定行数以解决在最大长度后断行问题的问题。由于在许多情况下,线的实际长度将小于最大长度,因此您可能需要从所需的行数中减去1。