分帳演算法解析·6 分鐘閱讀
最小轉帳次數是怎麼算的?為什麼我要轉帳給沒幫我墊過錢的人?
解答你對智慧結算的所有疑惑,以及如何使用自訂結算功能
情境說明:四人聚餐
假設小明、小華、小美、小強四個人一起出去玩,產生了以下費用:
消費記錄
午餐(小明付)$400
電影票(小華付)$800
晚餐(小美付)$1,200
計程車(小強付)$200
總計$2,600
四人平分,每人應付 $650。計算每個人的結餘:
結餘計算(已付 − 應付)
小明
−$250
付了 $400,應付 $650
小華
+$150
付了 $800,應付 $650
小美
+$550
付了 $1,200,應付 $650
小強
−$450
付了 $200,應付 $650
最小轉帳次數演算法
Mr.Splitter 使用「最大債權人配對最大債務人」演算法:
- 找出欠最多錢的人(最大債務人)
- 找出被欠最多錢的人(最大債權人)
- 讓最大債務人付給最大債權人
- 重複直到所有人結清
最佳結算方案(只需 2 次轉帳)
強
美
明
美
明
華
演算法計算結果:小強付小美 $450、小明付小美 $100、小明付小華 $150
常見疑問:為什麼我要付錢給沒幫我墊過的人?
小明的疑惑
「小美從來沒幫我付過錢啊!她付的晚餐 $1,200 我也有出錢,為什麼最後我要轉帳給她?」
答案
分帳不是看「誰直接幫你付了什麼」,而是看總帳的結餘。小美總共付了 $1,200,但她只需負擔 $650,所以她「多墊」了 $550 給整個群組。而小明只付了 $400,卻消費了 $650,所以他「欠」群組 $250。
為了讓轉帳次數最少,系統會讓欠錢的人直接付給墊錢最多的人。這樣大家的帳都結清了,而且轉帳次數最少!
如果傳統「誰欠誰就付誰」會怎樣?
如果按照「誰幫我付錢我就還誰」的邏輯,可能需要 6 次以上的轉帳,而且金額計算會非常複雜!
傳統方式的問題
- • 轉帳次數多(可能需要 6+ 次)
- • 金額零碎難算($100、$50、$75...)
- • 容易遺漏或重複
- • 手續費可能更高
自訂結算功能
如果你還是希望按照自己的方式結算,Mr.Splitter 也提供「自訂結算」功能:
如何使用自訂結算?
1
進入群組的「結餘」頁面
2
點擊「自訂結算」
3
選擇付款人和收款人
4
輸入金額,建立一筆「轉帳」記錄
這筆轉帳會直接抵銷雙方的欠款
為什麼自訂結算是「轉帳」而不是「支出」?
因為這筆錢是用來抵銷帳款的,不是新的消費支出。
- 支出:買東西、吃飯、娛樂,這些是「花掉」的錢
- 轉帳:人跟人之間的金錢移動,用來結清欠款
記錄為「轉帳」可以正確反映資金流動,也不會影響群組的總支出統計。
總結
最小轉帳次數
演算法自動優化
結餘才是關鍵
不是看誰直接幫你付
自訂結算
彈性滿足你的需求
