Algoritmo do demonio

Sei que eh grande, se tiver com preguiça de ler descarte o que tah em italico ja …mas me ajuuudem!

Galera … eu to entrando em parafuso …ja expressei minha duvida …de como fazer um algoritmo pra varias pessoas e nenhuma resposta conseguiu me ajudar, resolvi agora postar realmente todo o problema e ver se alguma alma boa me dah uma luz pra criaçao do algoritmo que preciso!!

vo tentar explicar mais ow menos o que preciso e no que ja pensei e nao pensei:

preciso fazer um programa … em que o usuario digitara n numeros, um de cada vez. Cada numero corresponde ao valor de uma moeda, soh que essas moedas podem conter qualquer valor, seria como eu depositar no banco … 25 centavos…mas posso fazer isso de qualquer maneira … depositando uma de 10 centavos … e 3 de 5 … ow uma moeda de 24 centavos e uma de um.

a ideia do programa consiste …em do valor total passado pelo usuario, dividir esse valor entre o menos numero de pilhas possivel, um exemplo seria:

o usuario depositou 33 centavos, com esse valor … o programa tem que dividir em 3 pilhas diferentes de 11 centavos, se isso nao for possivel o programa deve lançar uma msg dizendo que nao é possivel.

Porque pode nao ser possivel? poruqe o usuario pode ter digitado …uma moeda de 30 centavos e outra de 3 … ow seja nao tem como dividir esse vaor em pilhas iguais.

MEU RACIOCINIO:

  1. fiz uma funçao que verifica se o total do valor nao eh primo, se este for nao tem como dividir em pilhas
  2. fiz um algoritmo que testa se o valor total eh divisivel por um numero e o resto dê zero, assim da pra diferenciar que 33 nao dah pra ser divisivel por 2 …mas da por 3 … e assim sucessivamente

agora eh que eu nao sei como continuar, das moedas dadas … como faço uma analise combinatoria que divida o total em pilhas iguais?

ja pensei em dividir essas “pilhas” (ideia fisica do negocio) em vetores … e em cada vetor por os devidos valores, o problema é que eu posso por no primeiro vetor valores de moedas que feche o valor esperado mas posso ficar devendo uma dessas moedas mais adiante em outra “pilha”

Exemplo: eu preciso de 3 pilhas com 11 centavos, e eu consegui em uma pilha colocar valores como:

valores : 8 + 2 + 1 + 4 + 5 + 6 + 7

pilha1: 4+6+1 =11 … com esses valores …somente uma pilha iria conter 11 …mas se eu organizasse de outra forma …as 3 pilhas poderiam existir
exemplo:

pilha1: 8+2+1 =11
pilha2: 5+6 = 11
pilha3:7+4 = 11

BOM GALERA, ESSE EH MEU PROBLEMA: COMO FAZER UM ALGORITMO QUE VERIFIQUE TODAS ESSAS POSSIBILIDADES? COMO FAÇO UM ALGORIMTO QUE POR MAIS QUE UMA DAS PILHAS TENHA DADO CERTO …FAÇA UMA REANALIZE PARA JOGAR VALOR DE UMA PILHA PARA OUTRA PARA QUE SE FORMEM CORRETAMENTE AS 3 PILHAS (NESSE CASO) ???

alguem consegue me dar uma luz? peloamordedeus???

Problemão o seu hein…

Então voce precisa é de um algorimo de busca. Ou até mesmo quem sabe de uma rede neural… Dá uma olhadinha em alguns livros sobre inteligencia artificial.

E só mai um coisa, uma verificação muito util que voce poderia usar é a seguinte. Verificar se existe alguma moeda com o valor maior do que o valor ideal de uma pilha

[quote]o usuario depositou 33 centavos, com esse valor … o programa tem que dividir em 3 pilhas diferentes de 11 centavos, se isso nao for possivel o programa deve lançar uma msg dizendo que nao é possivel.

Porque pode nao ser possivel? poruqe o usuario pode ter digitado …uma moeda de 30 centavos e outra de 3 … ow seja nao tem como dividir esse vaor em pilhas iguais.[/quote]
Crie uma classe Moeda e faça a verificação pela quantidade de moedas, não pelo valor total.
No primeiro caso, 33 / 3 = 11. Daí você verifica a quantidade de cada tipo de moeda, pra ver se as pilhas são iguais.
No segundo caso, você teria 2 / 2 = 1, mas não tem como dividir as moedas igualmente (só tem uma de 30).

Cada pilha pode ser uma lista.

Schuenemann … ateh ai onde tu falow sem problemas …meu problema maior … eh a verificação apos isso … la onde eu explico da divisao das pilhas, minha real pergunta eh o que tah em MAIUSCULO. Agradeço a ajuda!

Haritos: rede neural? serah que eh tao complicado assim? eu tenho a impressao que nao deve ser porque eh um trabalho de algoritmos C …sobre a historia do valor maior q tu falow … eu pensei nisso sim … e da pra fazer tranquilo … o problema eh quando nao ocorrer isso.

aguardo ajuda!