Hallo zusammen !
Ich habe einen riesen Denkfehler, und darum bitte ich euch um Hilfe.
Ich habe in der Kassa nur 3 Euro und 5 Euro Münzen (eventuell auch mal eine 3. bzw. 4. Münze).
Jetzt möchte der Kunde von mir 15 Euro haben.
und zwar in folgender Form:
1 x 5 Euro + 3 x 3 Euro.
Nun suche ich einen algrithmus, der mir das erleichtert.
Ich hoffe, dass mir jemand tipps, links geben kann.
danke !
Der Denkfehler ist, dass es keine 3 € Münzen gibt 😁
Sorry konnt ich mir nicht verkneifen 😉
Gibt der Kunde vor, in welchen Münzen er seinen Betrag ausgegeben haben möchte?
Btw: 1x 5€ + 3 X 3€ gibt 14 🙂
.:: SilvrGame - Browsergame Development with Silverlight
.:: Bionic's blOg
Aus deinem Beispiel ist für mich noch nicht ersichtlich, was der Algorithmus können soll. Sollen so wenige Münzen wie möglich verwendet werden oder nach welchen Kriterien soll das ablaufen? Wenn du das weißt, erklärt sich der Algorithmus vermutlich eh von alleine.
Lg XXX
Mal ganz von Bionics berechtigten Einwuerfen abgesehen ... aber ungefaer so isses nen ganz einfacher Algo:
int[] muenzenDa = new int[] { 5, 3 };
int[] muenzenGeb = new int[muenzenDa.Length];
int kohleWill = 15;
int kohleGeb = 0;
for(int i=0; i<muenzenDa.Length; i++)
{
int anz = 0;
while( (kohleGeb + muenzenDa[i]) <= kohleWill)
{
kohleGeb += muenzenDa[i];
anz++;
}
muenzenGeb[i] = anz;
}
string ausgabe = "Gebe dir ";
foreach(int muenze in muenzenDa)
ausgabe += muenzenGeb[i] .ToString()+ " mal " + muenzenDa[i].ToString() + " Euro, ";
ausgabe += " wobei " (kohleWill - kohleGeb).ToString() + " Euren uebrig bleiben."
Wenn du nun noch einbauen willst, wie viele Muenzen maximal enthalten sind, einfach noch nen array mit den anzahlen der muenzen rin und das dann in der schleife mit runter zaehlen oder so
ich weiss dass es keine 3 und 5 Euro münzen gibt, ist ja nur für das beispiel wichtig.
Der Kunde DARF NICHT vorgeben welche Münzen er haben möchte, sondern nur den Betrag z.B. eben 14 Euro (nicht 15). Ich suche nach einem Algoritmus, der mir aufgrund meiner verfügbaren Münzen den maximalen Auszahlbetrag berechnet.
Ich könnte dem Kunden aufgrund meiner verfügbaren Münzen folgendes anbieten:
Höchstmöglicher Auszahlbetrag mit 5 Euro Münzen = 10 Euro
Höchstmöglicher Auszahlbetrag mit 3 Euro Münzen = 12 Euro
Daher soll 1 x 5 + 3 x 3 Berechnet werden.
Hrm, du brauchst dafür eine Verfügbarkeitsprüfung um deine dynamsich gehaltenen Listen zu füllen.
Dann gehst du von den größten Verfügbaren Betrag aus, wenn größter Verfügbarer Betrag z.b. dein 5 Euroscheine nicht vorhanden oder Komuliert größer als gewünschter Betrag gehe zur nächsten Liste. Wiederhole das solange bis Betrag erfüllt ist.
Diese Art der Verfügbarkeitsprüfung würde somit immer versuchen anhand deiner größt verfügbaren Geldmittel so wenig wie möglich Kleingeld auszuspuken.
Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(
Jup genau das 🙂
Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(