我有多个类别,每个类别都有多个元素。我现在正在寻找一种编程算法,将这些类别分布在预定义数量的列中,而无需分解类别,保持类别顺序,并使每列中的元素数量尽可能保持最佳。
例如: 将 5 个类别分布在 3 列中
Data:
category A, 7 elements
category B, 7 elements
category C, 3 elements
category D, 2 elements
category E, 8 elements
结果:
Column 1: category A, 7 elements
Column 2: category B and C, 10 elements
Column 3: category D and E, 10 elements
最佳答案
您拥有元素总数,因此可以将该数字除以列数以获得每列中的预期元素数。然后,您的工作就是最小化差值的平方和(因此,如果您必须存储 8 个元素,而您存储了 10 个元素,则该列的平方差为 2² = 4)。
然后,您可以编写一个递归函数,对于每个类别,决定是将该类别移动到下一列,还是保留在当前列中。这是一个 bool 决策,因此您可以从创建最小差异的分支开始,然后从创建最大差异的分支开始。该函数将跟踪迄今为止找到的最佳解决方案,如果当前的平方差之和大于该解决方案的总和,则立即停止。
关于algorithm - 编程算法: how evenly distribute categories across columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4459826/