我有许多类别,每个类别都有许多元素。我现在正在寻找一种编程算法,在预定数量的列中分配这些类别,而不会破坏类别,保持类别顺序,并尽可能保持每列中元素的数量。
例如: 分布3列的5个类别
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
答案 0 :(得分:3)
您有元素总数,因此可以将该数字除以列数以获得每列中预期的元素数。然后,您的工作是最小化差异的平方和(因此,如果您必须存储8个元素并存储10个,则该列的平方差为2 2 = 4)。
然后,您可以编写递归函数,对于每个类别,决定是将该类别移动到下一列,还是将其保留在当前列中。这是一个布尔决策,因此您可以从创建最小差异的分支开始,然后从创建最大差异的分支开始。该函数将跟踪到目前为止找到的最佳解,并且如果当前的平方差总和大于该解的总和,则立即停止。