计算数据点

时间:2015-09-25 08:45:22

标签: math layout

我有一定数量的列必须用数据集填充(如果可能)。要求是数据填充在上下,左右

所以,例如,假设我有4列和6个数据点,那么表必须像这样填充

1 3 5 6
2 4

或3列和7个数据点

1 4 7
2 5 
3 6

我尝试了多种计算方法,如果我回到高中,可能会很快解决它。但我老了,灰白,我的数学并不像以前那么好;)

非常感谢任何指针。非常感谢。

1 个答案:

答案 0 :(得分:0)

我认为“尽可能填充”意味着填充细胞的百分比尽可能大。此问题通常没有唯一解决方案,但可以使用以下算法查找 a 解决方案。

我进一步假设n是条目数,c列数,r行数。

r = ceil(n / c)
remainingAdditionalEntries = n - c
optimalAdditionalEntries = r - 1
nextEntry = 0
for iC from 0 to c - 1
    grid[iC][0] = nextEntry++
    additionalEntries = min(remainingAdditionalEntries, optimalAdditionalEntries)
    for iR from 1 to additionalEntries
        grid[iC][iR] = nextEntry++
    next
    remainingAdditionalEntries -= additionalEntries
next

该算法假定每列中至少有一个条目。只要它们存在,剩余的单元格可以通过其他条目填充。