我需要创建一种算法,在固定数量的人之间分配不同价值的金钱。钱的数量不能分割。
示例:我有四笔钱:10美元,20美元,50美元和90美元。在两个朋友之间以这样的方式分配这笔钱的最佳方式是什么?它是:值之间的差异是最小的。
对于这种情况,最好的解决方案是: 朋友#1:10美元,20美元和50美元(总计= 80美元)。 朋友#2:90美元。
我怎么能开始?
注意:所有的钱都必须分配。人数可能会有所不同。
我需要用Java实现它。
答案 0 :(得分:0)
你可以对O(k ^ {2} * MAXSUM ^ {k-1}进行O(k ^ n)或dp的暴力破解。 我认为不可能更快地解决它。 (n是硬币数,k是人数)。