У меня есть список предметов, который выглядит примерно так:
[
["orange", 9],
["watermelon", 3],
["grapefruit", 6],
["peach", 8],
["durian", 2],
["apricot", 6]
]
Я бы хотел разделить этот список на ... скажем, две группы, чтобы сумма весов предметов в каждой группе была как можно более равной, т.е.
List 1:
orange: 9
durian: 2
apricot: 6
TOTAL: 17
List 2:
watermelon: 3
grapefruit: 6
peach: 8
TOTAL: 17
В настоящее время я решаю эту проблему, обходя упорядоченный список зигзагообразным способом. Присвоение предметов с большим весом на первом проходе каждой группе, присвоение предметов с меньшим весом на втором проходе и т. Д.
Это работает нормально, но у него есть недостатки. Я думаю, что второй проход групп, в которых я обмениваюсь элементами между ними, приведет к более равномерно распределенным группам, но соответствующий код может стать слишком сложным.
Кто-нибудь знает более эффективный или разумный способ сделать это?
Спасибо!