Mr.Splitter
分帳演算法解析·6 分鐘閱讀

最小轉帳次數是怎麼算的?為什麼我要轉帳給沒幫我墊過錢的人?

解答你對智慧結算的所有疑惑,以及如何使用自訂結算功能

情境說明:四人聚餐

假設小明、小華、小美、小強四個人一起出去玩,產生了以下費用:

消費記錄

午餐(小明付)$400
電影票(小華付)$800
晚餐(小美付)$1,200
計程車(小強付)$200
總計$2,600

四人平分,每人應付 $650。計算每個人的結餘:

結餘計算(已付 − 應付)

小明

−$250

付了 $400,應付 $650

小華

+$150

付了 $800,應付 $650

小美

+$550

付了 $1,200,應付 $650

小強

−$450

付了 $200,應付 $650

最小轉帳次數演算法

Mr.Splitter 使用「最大債權人配對最大債務人」演算法:

  1. 找出欠最多錢的人(最大債務人)
  2. 找出被欠最多錢的人(最大債權人)
  3. 讓最大債務人付給最大債權人
  4. 重複直到所有人結清

最佳結算方案(只需 2 次轉帳)

$450
$100
$150

演算法計算結果:小強付小美 $450、小明付小美 $100、小明付小華 $150

常見疑問:為什麼我要付錢給沒幫我墊過的人?

小明的疑惑

「小美從來沒幫我付過錢啊!她付的晚餐 $1,200 我也有出錢,為什麼最後我要轉帳給她?」

答案

分帳不是看「誰直接幫你付了什麼」,而是看總帳的結餘。小美總共付了 $1,200,但她只需負擔 $650,所以她「多墊」了 $550 給整個群組。而小明只付了 $400,卻消費了 $650,所以他「欠」群組 $250。

為了讓轉帳次數最少,系統會讓欠錢的人直接付給墊錢最多的人。這樣大家的帳都結清了,而且轉帳次數最少!

如果傳統「誰欠誰就付誰」會怎樣?

如果按照「誰幫我付錢我就還誰」的邏輯,可能需要 6 次以上的轉帳,而且金額計算會非常複雜!

傳統方式的問題

  • • 轉帳次數多(可能需要 6+ 次)
  • • 金額零碎難算($100、$50、$75...)
  • • 容易遺漏或重複
  • • 手續費可能更高

自訂結算功能

如果你還是希望按照自己的方式結算,Mr.Splitter 也提供「自訂結算」功能:

如何使用自訂結算?

1

進入群組的「結餘」頁面

2

點擊「自訂結算」

3

選擇付款人和收款人

4

輸入金額,建立一筆「轉帳」記錄

這筆轉帳會直接抵銷雙方的欠款

為什麼自訂結算是「轉帳」而不是「支出」?

因為這筆錢是用來抵銷帳款的,不是新的消費支出。

  • 支出:買東西、吃飯、娛樂,這些是「花掉」的錢
  • 轉帳:人跟人之間的金錢移動,用來結清欠款

記錄為「轉帳」可以正確反映資金流動,也不會影響群組的總支出統計。

總結

最小轉帳次數

演算法自動優化

結餘才是關鍵

不是看誰直接幫你付

自訂結算

彈性滿足你的需求

常見問題

Q1. 為什麼系統要我轉錢給沒幫我墊過錢的人?
因為 Mr.Splitter 用「最少轉帳次數」演算法,把多人互欠的關係簡化成最精簡的轉帳路徑。雖然你沒直接欠那個人錢,但藉由轉給他可以同時清掉多筆債務,最終淨額相同。
Q2. 4 個人互欠原本要轉幾筆?
最壞情況需要 n × (n-1) / 2 = 6 筆。Mr.Splitter 演算法可以將其壓縮成 2–3 筆,省下一半以上轉帳次數。
Q3. 我可以自訂結算對象嗎?
可以。Mr.Splitter 在結算頁面提供「自訂結算」模式,你可以指定誰付給誰,系統會幫你算出每對之間應轉的金額,適合朋友間有特定還錢偏好的情況。
Q4. 結算後還能繼續加新支出嗎?
可以。結算後群組依然可用,新增的支出會從零開始累計。建議旅遊或活動結束後再結算,避免反覆結算。

延伸閱讀

讓 Mr.Splitter 幫你聰明結算!