Hoi,
Ik heb een probleempje in JAVA. Ik zal eerst eens het probleem nader toelichten.
Ik heb een muntensysteem, munten met de waardes 1,2,5,10,20 en 50. (Totaal 6 verschillende soorten munten). Nu wil ik het bedrag 28 zo gemakkelijk mogelijk betalen. Dus zo min mogelijk munten hoeven te geven, en zo min mogelijk munten hoeven te ontvangen. De uitkomst van het programma moet zijn, hoeveel munten van eigenaar verwisselt zijn. Zoals je onderaan al een stuk code ziet, deze code geeft mij de oplossing om het gemakkelijkste 19 te betalen, zonder dat ik iets terug krijg. De computer zou mij dan 10+5+2+2 geven. Alleen het kan sneller, want als ik ook nog geld terug krijg, zou het eenvoudiger kunnen 20-1. Hoe moet ik dit oplossen? Iemand een idee?
Alvast Bedankt voor je hulp
Ik heb een probleempje in JAVA. Ik zal eerst eens het probleem nader toelichten.
Ik heb een muntensysteem, munten met de waardes 1,2,5,10,20 en 50. (Totaal 6 verschillende soorten munten). Nu wil ik het bedrag 28 zo gemakkelijk mogelijk betalen. Dus zo min mogelijk munten hoeven te geven, en zo min mogelijk munten hoeven te ontvangen. De uitkomst van het programma moet zijn, hoeveel munten van eigenaar verwisselt zijn. Zoals je onderaan al een stuk code ziet, deze code geeft mij de oplossing om het gemakkelijkste 19 te betalen, zonder dat ik iets terug krijg. De computer zou mij dan 10+5+2+2 geven. Alleen het kan sneller, want als ik ook nog geld terug krijg, zou het eenvoudiger kunnen 20-1. Hoe moet ik dit oplossen? Iemand een idee?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| class MuntenVb
{
final int munten[] = {1, 2, 5, 10, 20, 50}, MAX = 6;
public static void main(String args[])
{
MuntenVb prg = new MuntenVb();
System.out.println("het minimum is " + prg.minmunt(19, 0));
}
int minmunt(int bedrag, int muntType)
{
int i, aantal, minimum;
if (bedrag == 0)
return 0;
minimum = bedrag;
for (i = muntType; i < MAX; i++)
if (bedrag > munten[i])
{
aantal = bedrag / munten[i];
aantal += minmunt(bedrag - (aantal * munten[i])+1, muntType + 1);
if (aantal < minimum)
minimum = aantal;
}
return minimum;
}
} |
Alvast Bedankt voor je hulp