|
Meine Frage:
Die Aufgabe :
Es treffen sich 2 Wanderer. Der Erste besitzt einen Krug mit 8 Liter Wein Inhalt, dass Gesamtvolumen dieses Krugs ist ebenfalls 8 Liter. Der Zweite besitzt 2 Krüge mit jeweils 5 und 3 Liter Füllvolumen, jedoch besitzt er noch keinen Wein. Der erstere möchte mit dem 2. so teilen das sie beide gleich viel Wein besitzen.
Die beiden besitzen leider keine Hilfsmittel zum abmessen. Das bedeutet, dass sie nur die Krüge komplett umkippen können bis einer leer oder der zu befüllende Voll ist.
Ich soll dazu nun ein Programm schreiben welches auch für allgemein gültige Fälle die schnellste Lösung angibt.
Meine Ideen:
Ich brauche keine Hilfe beim programmieren, an was es mir fehlt ist ein richtiger Lösungsansatz. Irgendwie scheint es mir was mit Differenzen zusammenzuhängen. Ich hab schon ziemlich lange daran gesessen und weiß das dies nur ein dürftiger eigener Ansatz ist.
Meine Idee ist nun, dass man immer die Differenz zwischen den beiden Wanderern betrachtet und immer so umfüllt man beim umfüllen die Differenz entweder verringert oder halt die kleinst mögliche Erhöhung entsteht.
Bsp. Person A besitzt 2 Krüge mit den Volumen 10(a) und 8(b) Liter.
Krug a ist mit 10 Liter Wein gefüllt.
Krug b ist mit 4 Liter Wein gefüllt.
Person B besitzt auch 2 Krüge mit den Volumen 11(c) und 7(d) Liter.
Krug c ist mit 4 Liter Wein gefüllt.
Krug d ist mit 6 Liter Wein gefüllt.
Die Differenz beträgt 4 Liter
Person A besitzt 14 Liter und Person B 10 also muss Person A abgeben
Möglichkeiten des umfüllens :
a --> c = 7 Liter Austausch
a --> d = 1 Liter Austausch
b --> c = 4 Liter Austausch
b --> d = 1 Liter Austausch
Man muss aber auch nur 2 Liter ausgleichen, da man sonst ja die Differenz einfach halten würde also muss immer die hälfte der Differenz ausgeglichen werden.
also würde ich jetzt einfach a --> d füllen
das würde ich dann einfach in eine Schleife mit Abbruchbedingung stecken und fertig \(^.^)/ /(._.)\
Ich danke schonmal für Hilfe !
mit freundlichen Grüßen Franz
|
|