Dì che circa 20 persone vanno in un negozio e tutti comprano qualcosa. Quando si tratta di pagare, 5 di loro pagano l'intero importo di 10.000 $ suddivisi in modo diseguale tra loro.
Dal momento che tutti hanno acquistato cose diverse, tutti devono importi diversi ai pagatori. Ora ci sono molti modi in cui i pagatori possono cancellare i saldi con i beneficiari precisamente 20 alla potenza 20.
La mia domanda è su quali basi tecniche dovrebbero contattare i pagatori e i beneficiari per ottenere l'autorizzazione? Tutte le soluzioni non possono essere ugualmente buone o sono?
Uno dei metodi di compensazione sarebbe quello di trovare pagatori e beneficiari con lo stesso importo in modo che possano annullare l'un l'altro riducendo così il numero totale di trasferimenti.
UPDATE:
- Le persone possono trasferire importi arbitrari a chiunque.
- Ridurre al minimo il numero totale di trasferimenti è l'obiettivo principale.
- Un beneficiario non può pagare un importo superiore a quello che deve e diventa un pagatore secondario.
- L'output dovrebbe essere un elenco di trasferimenti suggeriti. Un trasferimento suggerito sarebbe simile a questo
{FromUser: a, ToUser: b, ClearanceAmount: 100}
- I pagatori non sanno chi detiene il loro debito.
- Il debito dei beneficiari può essere suddiviso tra più persone.
- I beneficiari sanno quanto ciascun pagatore ha pagato dall'importo totale.