У меня есть набор целых чисел M и целевой суммы k. Я хочу найти подмножество M, которое при объединении ближе всего к k, не переходящее.Учитывая целевую сумму и набор целых чисел, найдите ближайшее подмножество чисел, которые добавляются к этой цели
Например:
M = {1, 3, 5, 5, 14}
k = 12
answer = {1, 5, 5}
because 1 + 5 + 5 = 11 and there is no way to make 12.
У меня есть дополнительное ограничение, что подмножество может содержать не более 4 элементов.
В моем приложении размер | M | может быть большим (порядка тысяч элементов). Если в течение разумного времени найти оптимальный ответ невозможно, меня интересуют решения, которые, по крайней мере, дают «хороший» ответ.
Сейчас я решаю эту проблему, создавая 10 000 случайных подмножеств и выбираю ближайший, который работает лучше, чем можно было бы ожидать, но медленный. Я не уверен, насколько далек от оптимального на самом деле, но любое понимание этого было бы интересно и мне.
И только для подтверждения, вы хотите фактическое подмножество, а не только сумму? –
Насколько велики индивидуальные значения целого числа? Есть ли среди них какие-то негативы? – dasblinkenlight
Целые числа положительны. Они занимают около 7 порядков (т. Е. От 1 до 1 М), но большинство из них [1 ... 10000]. –