Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite, estou com uma dúvida voltada para matemática discreta.
Eu tenho este algorítmo chamado Change-Making:
change(C1, C2, ...., Cr: valores de denominações de moedas, onde C1 > C2 > ... > Cr; n: inteiro positivo)
for i := 1 para r
di := 0 {di conta a denominação das moedas Ci usadas}
while n >= Ci
di := di + 1 {adiciona uma moeda na denominação Ci}
n := n - Ci
{di é o número de moedas na denominação Ci na troca for i = 1, 2, ...}
Agora a pergunta:
Considerando o algoritmo para fazer a troca e o padrão de moedas Americano($0.25, $0.10, $0.05, e $0.01).
Mostre que se introduzirmos $0.12, então o algoritmo não irá produzir uma troca usando a menor quantia de moedas possíveis.
Desculpem pela tradução um pouco "rude" pois estou estudando isto em inglês e não sei os termos corretos em pt.
Acho que consegui encontrar uma resposta:
Se declararmos o array (1 => 0.25, 2 => 0.10, 3 => 0.05, 4 => 0.01), e ignorarmos que n é um número inteiro (ele não irá receber *0.12**), o algorítmo irá retornar erro no primeiro while porque 0.12 não será maior ou igual a C1 = 0.25*, dessa forma a execução irá parar.
-- Créditos ao Luis Vieira no StackOverflowPt