Jump to content
Masterghetto

Ajuda No alguritimo please

Recommended Posts

Masterghetto

Boas pessoal ,

Não sei se alguém pode me ajudar a resolver esse problema , tenho um exercício para fazer em algoritmo e gostaria de uma luz para resolver esse exercício.

->" As maquinas de vendas automáticas necessitam de dar demasia (troco) em moedas, desde 2 Euros até 0,01 Euros, que são usadas correntemente. Descreva usando uma linguagem natural sucinta, uma sequência de acções (algoritmo) que, dado o valor da demasia em cêntimos, indique o numero de moedas de cada tipo que perfaz esse valor, minimizando o numero de moedas.

Por exemplo, para a demasia de 593 cêntimos seria indicado: 2 x 1€ + 1 x 1€ + 1 x 50c + 2 x 20c + 0 x 10 + 0 x 5c + 1 x 1c."

se alguém puder ajudar ficava agradecido

Share this post


Link to post
Share on other sites
mogers

Já tentaste alguma abordagem?

O nosso sistema monetário permite resolver isso da forma mais óbvia possível.


"What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine

Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação.

Share this post


Link to post
Share on other sites
skiller10

Procura por knapsack, acho que é a melhor maneira de resolver esse problema


"Eu acredito que a vida está constantemente nos testando em nosso nível de confiança, e a vida tem grande recompensa reservada àqueles que demonstram uma confiança sem fim para agir até conseguir. Este nível de resolução pode mover montanhas, mas ele tem de ser constante e consistente. Tão simples quanto isso possa soar, ainda é o denominador comum que separa aqueles que vivem seus sonhos dos que vivem simplesmente.."

Share this post


Link to post
Share on other sites
laboss

Eu tenho um código em VB.net que supostamente faz isto que queres mas com moedas de 1 cêntimo ate 2 euros olha vê pode ser que te ajude:

Dim Troco As Decimal = CType(TextBox2.Text, Decimal)
        Dim Moedas As Decimal() = New Decimal() {"0,01", "0,02", "0,05", "0,10", "0,20", "0,50", "1,00", "2,00"}
        Array.Sort(Moedas)
        Array.Reverse(Moedas)

        TextBox4.Text = ""

        For i As Integer = 0 To Moedas.Length - 1
            Dim nmoedas As Integer = 0
            While Troco >= Moedas(i)
                Troco = Troco - Moedas(i)
                nmoedas = nmoedas + 1
            End While
            If nmoedas <> 0 Then
                TextBox4.Text += nmoedas & " Moeda de " & Moedas(i).ToString & vbCrLf
            End If

        Next

Se o troco for: 3,29

ele retorna:

1 Moeda de 2,00

1 Moeda de 1,00

1 Moeda de 0,20

1 Moeda de 0,05

2 Moeda de 0,02

Share this post


Link to post
Share on other sites
mogers

Procura por knapsack, acho que é a melhor maneira de resolver esse problema

Não é preciso nada disso. O nosso sistema monetário ( o valor de cada moeda ) permite que uma estratégia greedy dê a solução óptima. Podes procurar na net sobre isso, não tenho nenhum link "à mão"


"What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine

Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação.

Share this post


Link to post
Share on other sites
xtrm0

É Facil.

Se queres o menor numero de moedas possiveis, primeiro vais adicionando moedas de 2€ até o valor que tu tinhas fosse excedidio por mais uma moeda de 2€.

A seguir fazer o mesmo para todas as outras moedas.

exemplo.

4,32€:

adicionar 2 (0+2<4,32)

adicionar 2 (2+2<4,32)

nao adicionar 2(4+2>4,32)

nao adicionar 1(4+1>4,32)

nao adicionar 0,5(4+0,5>4,32)

adicionar 0,2(4+0,<4,32)

nao adicionar 0,2(4,2+0,2>4,32)

adicionar 0,1(4,2+0,1<4,32)

nao adicionar 0,1(4,3+0,1>4,32)

.......

adicionar 0,02 e acabar(4,3+0,2=4,32)

Acho que tambem, para valores maiores, podes utilizar o mMC(minimo multiplo comum).


<Signature goes here>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.