跳到主要內容

多人分帳怎麼結清?最少轉帳演算法教學

你已經記好每筆消費、換好幣別、算出誰欠誰。最後一步——實際結清——正是多數團體最浪費力氣的地方。十個人各自還「自己欠的那位」,可能生出幾十筆轉帳。有更好的做法:用最少的付款次數結清整團。

「各還各的」的問題

旅程結束後,每人有一個淨額——被欠為正、欠人為負。直覺是每個欠錢者直接還每個被欠者。對 n 人的團體,這最多會變成 O(n²) 筆付款,實際上是一團沒人能驗證的部分轉帳蜘蛛網。

最少轉帳結清,白話講

因為只有淨額重要,你可以全部互抵,用少得多的轉帳清掉債務。標準貪婪做法:

  • 算出每人淨額(總墊付 − 總分攤)。
  • 分成欠錢者(負)與被欠者(正)。
  • 取最大欠款者與最大債權者:欠款者付兩者中較小的金額,其中一方歸零。
  • 重複直到全部歸零。

n 人,這最多產生 n − 1 筆轉帳,通常更少。五個人三、四筆就結清,而非十幾筆。

實例:五個朋友

週末小旅行後的淨額:

  • Ada:+NT$90(被欠)
  • Bo:+NT$10(被欠)
  • Cyr:NT$0(打平)
  • Dee:−NT$40(欠)
  • Eve:−NT$60(欠)

最大欠款者 Eve(−60)付最大債權者 Ada(+90)→ Ada 變 +30、Eve 結清。接著 Dee(−40)付 Ada(+30)→ Ada 結清、Dee 變 −10。最後 Dee(−10)付 Bo(+10)→ 雙雙結清。五個人、三筆轉帳,全團打平,沒有一毛錢白繞路。

這對團體旅行為何重要

  • 摩擦更少。轉帳越少,付款 App 的請求越少、「你轉了嗎」的訊息越少。
  • 可驗證。一份簡短的轉帳清單容易核對;成對付款的蜘蛛網則不行。
  • 幣別乾淨。跨多幣別時,用單一結清幣別互抵淨額能保持俐落(見 多幣別分帳)。

別忘了基本功

最少轉帳結清只對「正確的額度」有效,而額度取決於每筆消費都記好誰墊付、誰分攤。先把這步做對——見 旅行分帳完整教學

RFok Split 自動算出淨額並產生最少轉帳結清方案——你看到一份簡短、可驗證的「誰付誰」清單,以群組結清幣別計價,無論多少人、多少幣別。 免費試用

準備好開始分帳了嗎?

建立群組、邊走邊記,自動算出公平額度與最少轉帳。