Перше запитання тут, не кричите на мене, якщо це дублікат чи поганий виклик.
Вступ
Я сам подумав над цим викликом, і, здається, це непогана основна загадка для початківців кодерів-гольфістів. Це також може допомогти мені вирішити, яку мову з гольфу на коді вивчити.
Виклик
З огляду на масив цілих чисел, менший або рівний n
, виведіть або поверніть мінімальну кількість чисел з масиву, які точно підсумовують n
.
Ви можете вибрати функцію або повну програму.
Вхідні дані
Можна сміливо припускати 0 <= n < 2^31
.
Візьміть масив або список будь-якого виду ( vector
для C ++ або Java LinkedList
дозволено), n
а також необов'язковий параметр length
, який визначає довжину масиву.
Ви також можете взяти вхід як пробіл, розділений пробілом, відокремлений n
комою або пробілом:
1 5 7 3 7 3 6 3 2 6 3,10
1 5 7 3 7 3 6 3 2 6 3 10
якщо легше.
Вихідні дані
Виведіть або поверніть мінімальну кількість чисел з масиву, які точно підсумовують n
. Використовуючи наведений вище приклад:
1 5 7 3 7 3 6 3 2 6 3,10
Ваша програма повинна надрукувати:
2
тому що мінімальна кількість чисел, що підсумовує, - 10
це 2
( 7
і 3
).
Якщо немає рішення, надрукуйте або поверніть або мінус, 0
"Без рішення" (хоча це не було б розумним), ∞
(як пропонується), або будь-яке інше хибне значення, за винятком порожнього рядка.
Приклад введення та виводу
Вхід:
1 5 7 3 7 3 6 3 2 6 3,10
143 1623 1646 16336 1624 983 122,18102
5 6 9,12
Вихід:
2
3
-1
Оцінка балів
Це код-гольф, тому найкоротший код у байтах виграє.
Верхня відповідь буде прийнята на Різдво.
false
для справ, у яких немає рішення?