Mr.SplitterMr.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

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

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

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

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

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

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

總結

最小轉帳次數

演算法自動優化

結餘才是關鍵

不是看誰直接幫你付

自訂結算

彈性滿足你的需求

讓 Mr.Splitter 幫你聰明結算!