Dada uma matriz de números inteiros a
que contém n números inteiros e um único inteiro x
; remova a menor quantidade de elementos de a
para fazer a soma a
igual a x
. Se nenhuma combinação de for a
possível x
, retorne um valor falso.
Como apontado em um comentário, este é o conjunto máximo com uma soma de x , desculpe meu cérebro matemático menor. Eu esqueci muitos termos desde a faculdade.
Exemplos (Truthy):
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]
(Inalterado)
f([], 0) = []
(Caso inalterado de soma zero)
Exemplos (Falsy, qualquer valor consistente sem matriz):
Impossível argumentar: f([-2,4,6,-8], 3) = falsy (E.G. -1)
Caso de soma zero: f([], non-zero number) = falsy (E.G. -1)
- Nota: qualquer valor como
[-1]
não pode ser válido para falsidade, pois é uma saída de verdade em potencial.
Regras:
- A entrada pode ser obtida em forma de matriz ou como uma lista de argumentos, sendo o último ou o primeiro
x
. - Saída pode ser qualquer lista delimitada de números inteiros. EG
1\n2\n3\n
ou[1,2,3]
. - Qualquer valor pode ser usado como um indicador falso, além de uma matriz de números inteiros.
- Seu código deve maximizar o tamanho da matriz final, a ordem não importa.
- EG Para
f([3,2,3],5)
ambos[2,3]
e[3,2]
são igualmente válidos. - Por exemplo,
f([1,1,2],2)
você só pode retornar[1,1]
como[2]
é mais curto.
- EG Para
- A soma
a
e o valor dex
serão menores que2^32-1
e maiores que-2^32-1
. - Isso é código-golfe , vitórias mais baixas na contagem de bytes.
- Se houver vários subarrays do mesmo tamanho que são válidos, é não aceitável para a saída de todos eles. Você deve escolher um único e produzir esse.
Deixe-me saber se isso foi publicado, não foi possível encontrá-lo.
Posts que encontrei assim : relacionados, mas fechados , ...