Primeira pergunta aqui, não grite comigo se isso for uma duplicata ou um mau desafio.
Introdução
Eu mesmo pensei nesse desafio e parece ser um bom quebra-cabeça básico para jogadores iniciantes de código. Também pode me ajudar a decidir qual idioma do código de golfe aprender.
Desafio
Dada uma matriz de números inteiros menores ou iguais a n, produza ou retorna o número mínimo de números da matriz que somam exatamente n.
Você pode optar por escrever uma função ou um programa completo.
Entrada
Você pode assumir com segurança 0 <= n < 2^31.
Pegue uma matriz ou lista de qualquer tipo ( vectorpara C ++ ou Java é LinkedListpermitido), junto com ne um parâmetro opcional length, que especifica o comprimento da matriz.
Você também pode considerar a entrada como uma sequência separada npor espaço, separada por vírgula ou espaço:
1 5 7 3 7 3 6 3 2 6 3,10
1 5 7 3 7 3 6 3 2 6 3 10
se for mais fácil.
Resultado
Saída ou retorne o número mínimo de números da matriz que somam exatamente n. Usando o exemplo acima:
1 5 7 3 7 3 6 3 2 6 3,10
Seu programa deve imprimir:
2
porque o número mínimo de números que soma 10é 2( 7e 3).
No caso de não haver solução, imprima ou retorne um negativo, 0"Nenhuma solução" (embora isso não seja inteligente), ∞(como sugerido) ou qualquer outro valor falso, com exceção de uma sequência vazia.
Exemplo de entrada e saída
Entrada:
1 5 7 3 7 3 6 3 2 6 3,10
143 1623 1646 16336 1624 983 122,18102
5 6 9,12
Resultado:
2
3
-1
Pontuação
Isso é código-golfe, então o código mais curto em bytes vence.
A resposta principal será aceita no Natal.
falsepara casos sem soluções?