在 N 列中均匀分布文本的算法

标签 algorithm text layout multiple-columns partitioning

实现CSS多栏布局均衡填充的算法是什么?

数学公式:给定一个正数列表(即要排列的项目的高度),将它们按顺序分布到 N 个列表中,使得总和最大的列表与总和最小的列表之间的差值是所有可能安排中的最小值。

最佳答案

先将列表转化为累加,然后将最后一个元素除以N得到IdealColumnSize:

例如:

2, 3, 6, 8, 3, 4, 2

产生累积列表:

2, 5, 11, 19, 22, 26, 28

假设我们要将它分成 3。IdealColumnSize 是 9 1/3。 现在对于索引 1 到 N-1,选择累积列表中最接近的元素。

最接近 9 1/3 的是 11,因此前三个数字位于第 1 列。

最接近 18 2/3 的是 19,所以一个数字进入第 2 列。

其余项目放在最后一列。

关于在 N 列中均匀分布文本的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52991833/

相关文章:

html - 居中溢出的文本容器

c# - 在 Windows 窗体开发中更改 C# 用户控件布局

r - 通过算法检测时间序列中的跳跃

algorithm - 如何修改Lomuto分区方案?

C# 对父/子列表进行排序以产生平面输出

java.net.URLConnection.guessContentTypeFromStream 和 text/plain

jsf - 是否建议使用h :outputText for everything?

arrays - 如何有效地找到二维数组中的区域?

pdf - Crystal Reports 截断 PDF 中的文本

asp.net-mvc - _ViewStart.cshtml中定义的访问函数