所以我正在开发一个有趣的小程序,并遇到了这个相当有趣的问题: 我有几组预定义的设置大小的值。这些都是更大的值池的唯一子集。每个数字子集的平均值应尽可能地相互接近。这不需要是完美的,但应该足够接近以使所有集合彼此“平衡”。
ex:{1,2,3,6,9,10,15,23,27}全球平均值:10.66 需要分为2组2组和1组5个
可接受的结果: {1,27} {2,23} {3,6,9,10}
在实践中,这些值的范围在60到200之间,而这些值的范围从6到20不等。
我尝试了几种不同的算法,取得了不同程度的成功,但我很想知道StackOverflow的优秀人才。
我最好的, 扎克
答案 0 :(得分:2)
这让我想起了RubyQuiz#65,"Splitting the Loot"。主要的区别在于,这个问题正在寻找完全相同的分裂,而不是几乎相等。也许其中一些解决方案可以帮到你。
答案 1 :(得分:0)
这听起来很有趣。我很想知道这是什么的实际应用。
可以肯定的是,猜测你的意思是非相交的子集和子集的总和大致相等(而不是平均值)
另外,在这个例子中我无法理解你是如何决定(肯定的)制作2组2和5中的一组。
我可以想到一个贪婪的次优解决方案。
但这并不总能为您提供最佳解决方案。
有关 1,2,3,6,9,10,15,23,27 逆转:27,23,15,10,30,06,03,02,01
27 3 2 1 = 33
23 09 = 30
15 10 06 = 31