algorithm - 将文本均匀地分成一定数量的行

标签 algorithm computer-science line-breaks

有一种线性时间算法(或 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/

相关文章:

algorithm - 行进立方体,按位与和或

programming-languages - 计算机如何理解时间?没有等待的asm指令

javascript - PHP - 从文本区域中删除换行符

java - 代码换行 - 如何处理长行

algorithm - 如何创建也将祖 parent 与孙子女联系起来的二叉树?

python - 将数据点分组到系列中

algorithm - 如何计算非抢占式调度中的平均周转时间?

haskell - 所有函数类型都形成 `Hask` 的子类别吗?

html - 控制标题标签内 <br> 标签的行高?

string - 检查给定的字符串是否遵循给定的模式