Итак, вот проблема:
Учитывая input = [100 80 66 25 4 2 1]
, мне нужно найти лучшую комбинацию, чтобы дать мне 50.
Глядя на это, лучшее будет 25 + 25 = 50, поэтому мне нужно 2 элемента из массива.
Другие комбинации включают 25+4+4+4+4+4+4+1
и 25+4+4+4+4+4+2+2+1
.. и т.д. и т.д.
Мне нужно найти все возможности, которые дают мне сумму на значение, которое я хочу.
EDIT: а также наилучшая возможность (одна с наименьшим количеством терминов)
Вот что я сделал до сих пор: Сначала создайте новый массив (простой для цикла, который циклически проходит через все элементы и сохраняет в новом массиве temp), проверьте все элементы выше моего массива (поэтому для входа 50 элементы 100,80,66 выше, поэтому отбросьте их а затем мой новый массив [25 4 2 1]). Затем, из этого, мне нужно проверить комбинации.
Первое, что я делаю, это простая инструкция if, проверяющая, если какие-либо элементы массива ТОЧНО соответствуют числу, которое я хочу. Поэтому, если мне нужно 50, я проверяю, находится ли 50 в массиве, если нет, мне нужно найти комбинации.
Моя проблема в том, что я не совсем уверен, как найти каждую комбинацию. Я изо всех сил пытаюсь придумать алгоритм на некоторое время, но я всегда просто теряю сознание.
Любая помощь/советы будут высоко оценены.
PS - мы можем предположить, что массив всегда сортируется в порядке от LARGEST до SMALLEST.