У меня есть несколько элементов в массиве, каждый из которых связан с определенным весом. Существует бизнес-правило, согласно которому никакие два смежных элемента не могут иметь общий вес больше определенного значения, скажем для простоты 100.
Например, следующее нормально:
[40,60,40,50]
Но не этот (поскольку 50 + 60 = 110)
[50,60,40]
Я пытаюсь реализовать алгоритм, который переупорядочит элементы (если возможно), чтобы бизнес-правило выполнялось. Например, второй можно переставить на [60,40,50] или [50,40,60]
Алгоритм также должен стараться минимизировать количество перемещаемых элементов, то есть первое решение выше является наиболее подходящим, поскольку «подстановка» [60 , 40]
поддерживается.
Я не ищу полного ответа или примеров кода, но был бы рад, если бы кто-нибудь мог указать на некоторые алгоритмы или категории алгоритмов для этой цели. Было бы гораздо лучше полагаться на существующий и проверенный алгоритм, чем на какие-то самодельные вещи.
Примечание: на самом деле количество элементов очень велико, поэтому тестирование всех различных перестановок НЕ является вариантом.