Ho una lista di numeri (chiamiamola L
) e ho bisogno di dividere questa lista in tre gruppi ( A
, B
e C
) tali che la somma dei numeri in ogni il gruppo ( sum(A)
, sum(B)
, sum(C)
) è il più vicino possibile a sum(L) / 3
.
Sono sicuro che è un vecchio problema, ma non sono riuscito a trovare una soluzione. Il più vicino che ho ottenuto è ordinare L
, quindi inserire ogni terzo numero a partire dal primo elemento in A
, quindi inserire ogni terzo numero a partire dal secondo elemento in B
e mettere il resto in C
. Ma non sempre funziona, specialmente se i numeri in L
non sono distribuiti in modo uniforme.