一尘不染

在小组中共享/结算费用的算法

algorithm

我期待着解决以下问题的算法。

问题:会有一群人互相欠钱或不欠钱。现在,我需要一种算法(最好,最简洁)来解决该组之间的费用。

Person AmtSpent
------ ---------
A       400  
B      1000  
C       100  
Total  1500

现在,每人的支出为1500/3 =500。意味着B等于A 100,B等于C400。我知道,我可以从最少的花费开始,然后继续前进。

如果有的话,可以给我最好的一点吗?

提前致谢。

概括起来,1.找到总费用和人均费用。
2.查找每个欠款或未偿还的金额(-ve表示未偿还)。
3.从最少的+ ve金额开始。分配给-ve数量。
4.继续重复步骤3,直到用完-ve量。
s。移至下一个更大的+ ve数字。继续重复3和4,直到有+ ve个数字。

还是有更好的方法?我只是好奇。:)


阅读 255

收藏
2020-07-28

共1个答案

一尘不染

您已经描述过了。将所有费用相加(在您的情况下为1500),然后除以共享费用的人数(500)。对于每个人,从个人份额中扣除该人所作的贡献(对于A人,从500中减去400)。结果就是人“欠”中央池的净额。如果该数字对任何人都是负数,则中央池“欠”该人。

因为您已经描述了解决方案,所以我不知道您要问什么。也许您正在尝试在没有中央银行(即“银行”)的情况下解决问题?

我也不知道“从最少的支出开始并向前迈进”是什么意思。

2020-07-28