我有一定数量的列必须用数据集填充(如果可能)。要求是数据填充在上下,左右
所以,例如,假设我有4列和6个数据点,那么表必须像这样填充
1 3 5 6
2 4
或3列和7个数据点
1 4 7
2 5
3 6
我尝试了多种计算方法,如果我回到高中,可能会很快解决它。但我老了,灰白,我的数学并不像以前那么好;)
非常感谢任何指针。非常感谢。
答案 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
该算法假定每列中至少有一个条目。只要它们存在,剩余的单元格可以通过其他条目填充。