对不好的标题感到抱歉,但我不知道怎么称呼它。
我有K个列表,每个都有N个元素,例如:
[8, 5, 6] [4, 3, 2] [6, 5, 0]
我希望找到这些列表的排列'元素,以便第一列,第二列等中的元素总和尽可能彼此接近(因此分布是"公平")。
在我的例子中(可能):
[8, 5, 6] [4, 2, 3] -- the lists contain the same values [0, 6, 5] just in different order sums: 12, 13, 14
是否有一些更优雅的方式,而不是找到每个列表的所有排列,并蛮力发现"理想"它们的组合?
我不是要求代码,如果你知道,只要给我一个提示如何去做。 谢谢!
PS。列表可能非常大,而且更多 - 想想~20x~20 max。
答案 0 :(得分:2)
如果你能接受一个近似值,我会迭代地做:
它适用于你的例子,但显然不会总是完美。
这是example(javascript)