Era uma noite quente de verão ...
quando meu carro estúpido decidiu parar no meio da estrada no meu caminho de volta do supermercado. Empurrei-o para a linha lateral e decidi ir para casa. Abri o porta-malas para tirar as compras e as coisas restantes. Foi então que notei que os itens não estavam uniformemente ensacados. Algumas sacolas tinham itens mais pesados, enquanto outras tinham poucas coisas mais leves - algumas até tinham uma mistura desses itens. Para facilitar o transporte, decidi agrupar tudo em duas malas e fazer com que seus pesos fossem o mais próximo possível um do outro.
Seu objetivo
é me ajudar a reorganizar os itens em duas sacolas de compras, de modo que a diferença entre as duas seja o mais próxima possível de zero.
Matematicamente:
PESO MÃO ESQUERDA - PESO MÃO DIREITA ≈ 0
Exemplo
Se eu tivesse apenas 2 itens, Pão e manteiga de amendoim, e o peso do pão for 250 gramas e a manteiga de amendoim for 150 gramas, a melhor maneira é carregá-los separadamente com as duas mãos.
W LH - W RH = W (PÃO) - W (P. MANTEIGA)
250 - 150 = 100
A outra possibilidade é:
W (PÃO, P. MANTEIGA) - W (mão vazia) = (250 + 150) - 0 = 400
Isso não é melhor do que o nosso primeiro caso, então você deve ir com o primeiro.
Seu código deve
- anote números indicando pesos de itens na sacola de compras. As unidades não são importantes, mas devem ser as mesmas (idealmente quilogramas ou gramas). A entrada pode ser feita uma por uma ou todas de uma vez. Você pode restringir a contagem total a 20 itens, no máximo, se desejar.
- Você escolhe o formato / tipo de entrada, mas nada deve estar presente além dos pesos.
- Qualquer idioma é permitido, mas atenha-se às bibliotecas padrão.
- Exibir saída. Novamente, você pode escolher o formato, mas explique o formato na sua postagem. ou seja, como podemos saber quais são os itens à esquerda e quais são os itens à direita.
Pontos
- O menor código vence.
Sugestão
Os dois possíveis algoritmos em que pude pensar são diferenciação (mais rápida) e permutações / combinações (mais lenta). Você pode usar esse ou qualquer outro algoritmo que faça o trabalho.