Я ищу алгоритм, который я могу использовать для объединения значений в массиве, чтобы как можно ближе подойти к "другому значению".
Например, число, которое я хочу узнать, какая комбинация дает результат закрытия, равна 2,5. И мой массив [0.5, 1.0, 1.5, 2.0, 3.0]
. Комбинация в этом случае будет 2.0+0.5
.
2.7 даст тот же самый комбо (2.5 является ближайшим), а 3.7 даст 3.0+0.5
, а 7.0 будет 3.0+3.0+1.0
.
Я читал разные алгоритмы для создания доступных комбинаций и таких - например, этот: https://codereview.stackexchange.com/info/7001/better-way-to-generate-all-combinations Однако у меня возникают трудности с написанием функция, которая позволяет использовать одно и то же значение несколько раз (например, мой пример с 7.0). Это делает количество комбинаций довольно большим.
Любой, имеющий хороший пример, спрятан? Или у вас есть указатели?
ИЗМЕНИТЬ @zkar рассказал мне о "проблеме рюкзака". Я могу добавить, что для моего примера искомое значение находится в заданном диапазоне (1.0 и 10.0), что несколько ограничивает комбинации.