我期待着为下面的问题找到一个算法。
问题:会有一批人欠对方一些钱或什么也不欠。现在,我需要一个算法(最好的和整洁的)来解决这个群体的费用。
Person AmtSpent
------ ---------
A 400
B 1000
C 100
Total 1500
现在,人均消费是1500/3=500。意思是B给100。B给C 400。我知道,我可以从最少的花费开始,继续努力。
如果有的话,能给我指一个最好的吗?
提前谢谢。
总而言之,
一。找出总费用和人均费用。
2.找出每个欠款或未付的金额(-ve表示未付)。
三。从最少的+ve开始。分配到-ve金额。
四。继续重复第三步,直到你用完所有的钱。
移动到下一个更大的+ve数字。一直重复3和4,直到有+ve数字为止。
还是有更好的办法?我只是好奇。:)
最佳答案
你已经描述过了。将所有费用相加(在您的情况下为1500),除以分摊费用的人数(500)。对于每个人,从个人股份中扣减该人的供款(对于A人,从500中扣减400)。结果是人们“欠”中央游泳池的网。如果对任何人来说这个数字是负数,中央游泳池就“欠”这个人。
因为你已经描述了解决方案,我不知道你在问什么。
也许你是想在没有中央银行的情况下解决问题?
我也不知道你所说的“从最少的花费开始,继续前进”是什么意思。
关于algorithm - 在小组之间共享/结算费用的算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/974922/