AA制分账怎么用最少的转账次数结清所有人的账

每个人垫付的金额都不一样时,分账不只是简单的平均计算——如果算法得当,一群人结清所有账目所需的转账笔数,可以比想象中少得多。

  1. 第一步:算出人均应付金额

    把整个group的总支出加起来,除以总人数,得到每个人理论上应该承担的金额。这个数字和当时实际是谁掏钱付账没有关系。

  2. 第二步:算出每个人实际垫付金额与人均应付金额的差额

    用每个人实际付出的金额,减去第一步算出的人均应付金额。结果为正,说明这个人应该收到钱;结果为负,说明这个人还欠group钱。

  3. 第三步:把所有人分成"该收钱的"和"该付钱的"两组

    差额为正的人归入"债权人"一组,差额为负的人归入"债务人"一组。差额刚好为零的人不需要任何转账。

  4. 第四步:让差额最大的债务人和差额最大的债权人配对转账

    每次都让欠款最多的人,向该收款最多的人转账,金额取两者差额中较小的那一个,然后更新双方余额,清零的人退出配对,重复这个过程直到所有人余额都为零。

  5. 第五步:确认结果——转账笔数远少于"两两互转"

    用这种方法,n个人的group最多只需要n-1笔转账就能结清所有账目,而如果每个人都单独和其他人一一核算,理论上最多可能产生n×(n-1)÷2笔转账。

为什么"两两互转"式的分账特别浪费转账次数

如果5个朋友每人都单独和其他人核算各自垫付的部分,理论上最多可能要转账10次。而先把每个人的净差额算出来,再只针对净差额进行结算,大量原本会相互抵消的转账其实根本不需要发生。

为什么"人数-1笔"转账一定够用

把每个人的净差额算出来之后,整个group里"该收的总额"和"该付的总额"必然完全相等。每次都让差额最大的债务人和差额最大的债权人配对结算,至少会有一个人的差额在这一轮恰好归零,这也是为什么整个结算过程最多只需要比剩余人数少一笔转账就能完成。

常见问题

总金额没法刚好平均分配怎么办?

出现几毛钱到几块钱的零头很常见。常见的处理方式是把人均金额四舍五入到最接近的整数单位,或者把零头直接算在最初垫付账单的那个人身上,因为涉及金额通常很小,不影响大局。

配对的先后顺序会影响最终谁给谁转账吗?

转账的总笔数不会变,但具体"谁给谁转多少钱"的配对方式可能因为配对顺序不同而有所差异。不过无论采用哪种配对顺序,每个人最终需要支付或收到的净金额是完全相同的。