Ich habe eine Geldbörse G mit n Münzen M1…Mn.
Der Prägewert W einer Münze bewegt sich zwischen Wmin und Wmax.
W ist immer eine positive Ganzzahl.
Beispiel (n=23; Wmin=1; Wmax=200):
Anzahl W (Wert) Summe Geldeinheiten GE
4…3…4 * 3 = 12
3…4…3 * 4 = 12
3…5…3 * 5 = 15
3…6…3 * 6 = 18
2…7…2 * 7 = 14
3…9…3 * 9 = 27
2…12…2 * 12 = 24
1…14…1 * 14 = 14
1…17…1 * 17 = 17
1…20…1 * 20 = 20
Summe S aller Geldeinheiten in meiner G: 173 GE
In meiner Geldbörse sind also 23 Münzen. Die kleinste Münze ist
ein 3er, die größte ein 20er. Ich habe insgesamt S=173 GE.
Jetzt kommt ein anderer Marktteilnehmer auf mich zu und bittet mich,
seine Münze mit dem Prägewert W1 zu wechseln („kleinmachen“).
Ich schaue in meine G und prüfe zunächst:
1.) Ist W1 „kleinste“ Münze (kann ich überhaupt „kleinmachen“)?
Wenn ich mindestens eine der beiden Fragen mit „Nein“ beantworte, sage
ich: „Tut mir leid, ich kann nicht wechseln“.
Wenn aber beide Male die Antwort „Ja“ heißt, wird´s komplizierter.
Es kann nämlich viele Möglichkeiten geben, wie ich wechsle.
Beispiel (G wie oben; W1=34):
Möglichkeit Stückelung des Wechselns
1…(1 * 20) + (1 * 14) = 34
2…(2 * 12) + (2 * 5) = 34
3…(1 * 9) + (1 * 7) + (3 * 6) = 34
4…(1 * 17) + (1 * 5) + (4 * 3) = 34
usw…usw.
Es kann aber auch sein, daß ich gar nicht wechseln kann, obwohl Frage
1 und 2 bejaht wurden.
So, und jetzt meine Frage/Bitte:
- Gibts eine Möglichkeit, die Lösung bei gegebenem G und W1 zu berech-
nen (Formel)? - Kann mir jemand in Grundzügen (BASIC/Pascal) einen entsprechenden
Algorithmus formulieren (ohne programmtechnische Details)? - Wie schauts aus, wenn der andere Marktteilnehmer z. B. sagt: „Ich bräuchte
zwei 3er und einen 5er“?
Vielen Dank für Eure Lösungen!
Grüße,
Gustav Kollmeier, München