Первый вопрос здесь, не кричите на меня, если это дубликат или плохой вызов.
Вступление
Я сам подумал об этой задаче, и она кажется хорошей основной головоломкой для начинающих любителей кода. Это также может помочь мне решить, какой язык для игры в коде изучать.
Вызов
Учитывая массив целых чисел, которые меньше или равны 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для случаев без решений?