我期待着解决以下问题的算法。
问题:会有一群人互相欠钱或不欠钱。现在,我需要一种算法(最好,最简洁)来解决该组之间的费用。
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个数字。
还是有更好的方法?我只是好奇。:)
您已经描述过了。将所有费用相加(在您的情况下为1500),然后除以共享费用的人数(500)。对于每个人,从个人份额中扣除该人所作的贡献(对于A人,从500中减去400)。结果就是人“欠”中央池的净额。如果该数字对任何人都是负数,则中央池“欠”该人。
因为您已经描述了解决方案,所以我不知道您要问什么。也许您正在尝试在没有中央银行(即“银行”)的情况下解决问题?
我也不知道“从最少的支出开始并向前迈进”是什么意思。