Дан массив целых чисел, a
который содержит n целых чисел и одно целое число x
; удалить наименьшее количество элементов, a
чтобы сделать сумму a
равной x
. Если никакие комбинации не a
могут сформироваться x
, вернуть ложное значение.
Как указано в комментарии, это максимальный набор с суммой х , извините мой меньший математический мозг. Я забыл много терминов с колледжа.
Примеры (правда):
f([1,2,3,4,5,6,7,8,9,10], 10) = [1,2,3,4]
f([2,2,2,2,2,2,2,2,2], 10) = [2,2,2,2,2]
f([2,2,2,2,-2,-2,-2,-4,-2], -8) = [2,2,-2,-2,-2,-4,-2]
f([-2,-4,-2], -6) = [-4,-2] OR [-2,-4]
f([2,2,2,4,2,-2,-2,-2,-4,-2], 0) = [2,2,2,4,2,-2,-2,-2,-4,-2]
(Без изменений)
f([], 0) = []
(Неизменный случай с нулевой суммой)
Примеры (Falsy, любое непротиворечивое значение не из массива):
Невозможно сделать дело: f([-2,4,6,-8], 3) = falsy (E.G. -1)
Случай с нулевой суммой: f([], non-zero number) = falsy (E.G. -1)
- Примечание. Любое значение, например,
[-1]
не может быть допустимым для ложных значений, поскольку это потенциальный достоверный вывод.
Правила:
- Входные данные могут быть приняты в виде массива или в виде списка аргументов, последний или первый
x
. - Выходными данными может быть любой список целых чисел с разделителями. НАПРИМЕР
1\n2\n3\n
или[1,2,3]
. - Любое значение может быть использовано в качестве ложного индикатора, кроме массива целых чисел.
- Ваш код должен максимизировать размер конечного массива, порядок не имеет значения.
- Например, для
f([3,2,3],5)
обоих[2,3]
и[3,2]
одинаково действительны. - Например, для
f([1,1,2],2)
вас можно вернуть только[1,1]
как[2]
короче.
- Например, для
- И сумма,
a
и значениеx
будут меньше2^32-1
и больше чем-2^32-1
. - Это код-гольф , выигрывает наименьшее количество байт.
- Если существует несколько допустимых подмассивов одинакового размера, вывести их все будет недопустимо. Вы должны выбрать один и вывести его.
Дайте мне знать, если это было опубликовано, я не смог его найти.
Сообщения, которые я нашел, как это : Связанные, но закрытые , ...