javascript - 平均分配一组总数的最佳方法是什么?
问题描述
我试图将总额平均分配给每个相关人员。
例如我会用钱。
示例 1
人 A 有 20 美元
B 人有 40 美元
人 C 有 60 美元
因此,要使所有事情都成为解决方案,就是 C 人给 A 人 20 美元。
示例 2
人 A 有 36 美元
B 人有 15 美元
人 C 有 9 美元
为了让这种情况更...
A 给 B 16 美元,然后 B 给 C 11 美元,
或者 A 给 B 5 美元和 C 11 美元
示例 3
人 A 有 53 美元
B 人有 95 美元
人 C 有 24 美元
D 人有 98 美元
人 E 有 30 美元
每个人需要 60 美元,我怎样才能找到涉及最少转移资金的方法呢?
解决方案
一个自然的做法是:多的人给少的人;然后重复。
具体来说:你可以计算出每个人最后应该拥有的数量V(这只是每个人起始数量的平均值)。然后,如果拥有最多的人拥有 M,拥有最少的人拥有 L,则从拥有最多的人到拥有最少的人,给出 min(MV,VL)。在那次移动之后,这两个人中至少有一个人的数量是正确的。现在重复,直到每个人都有所需的数量。
移动的数量最多将是人数。
我怀疑这可能是最佳的,但你应该自己检查一下。您可以尝试应用https://cs.stackexchange.com/q/59964/755中的方法,看看是否可以找到反例或证明它是正确的。
推荐阅读
- python - Python,用简单的代码立即关闭
- vue.js - 在 Vue 中导入 JS (websql) 库
- awk - sed 搜索字符串的挖掘字典
- node.js - 在续集中添加按位和列
- python - 按下“1”按钮后缩放停止工作,但仅在子图中
- buildfire - Buildfire:删除保存弹出窗口
- ghostscript - Ghostscript mswinpr2 打印单色,除非 BitsPerPixel=24 创建非常大的假脱机文件
- dns - 如何避免Godaddy在子域累积的情况下出现这个域转发问题?
- java - 如果页面无法正常加载,如何刷新
- ajax - 为什么 XMLHttpRequest 有效但 Angular2+ 返回 404?