Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
920to924
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Mal was zum Grübeln...

Mal was zum Grübeln...
02.11.2007 09:24:32
peterpostmaster
Hallo,
ich habe da eine Aufgabe, bei der ich nicht weiß, wie ich diese lösen soll. Vielleicht habe Ihr eine Idee oder habt das schon einmal gelöst.
Ich habe einen Betrag, sagen wir 100 Euro. Und ich habe 27 Teilbeträge, wie z.B. 6,05 / 13,00 / 10,00 / 5,50 / 20,00 / ...
Jetzt möchte ich gerne wissen, bei welchen Kombinationen der Teilbeträge der Betrag von 100 Euro ganz aufgeht. Lösungen können folgende sein:
10 x 10,00 oder
3 x 20,00 und 4 x 10,00, usw.
Es müssen alle möglichen Kombinationen erscheinen, Mehrfachnennungen sind auch möglich.
Ja, dann habt Ihr jetzt mal was zum Grübeln, denn ich bin mit meinem Latein am Ende. ;-)
Viele Grüße.
Patrick

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mal was zum Grübeln...
02.11.2007 09:30:00
Rudi
Hallo,
Betrag in A1, Teilbeträge in A2:A28
in B2: =WENN(REST($A$1;A2)=0;$A$1/A2;"")
und runterziehen
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Mal was zum Grübeln...
02.11.2007 10:26:07
peterpostmaster
Hallo Rudi,
ja, das wäre eine Möglichkeit. Jedoch gibt es dabei keine Kombinationen. Er zeigt mir auf, daß 10x10€=100€ und 5x20€=100€ sind. Die Kombination 3x20€ + 4x10€ (z.B.) fehlt.
Gruß
Patrick

AW: Mal was zum Grübeln...
02.11.2007 12:13:00
peterpostmaster
Ja, aber es soll auch nicht nach der besten Stückelung gesucht werden, sondern es sollen ALLE Stückelungen ausgegeben werden, die es gibt. Da kommt es vor, das es mehrere gibt.
Man, scheint komplizierter zu sein als ich dachte...

AW: Mal was zum Grübeln...
02.11.2007 12:33:00
Rudi
Hallo,
das kannst du meiner Meinung nach vergessen.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Mal was zum Grübeln...
02.11.2007 13:28:27
Harry
Hallo Patrick,
in VBA ist der Algorithmus doch relativ simpel (soweit ich jetzt nichts übersehen habe). Es kommt jetzt nur noch darauf an, ob du auch noch eindeutige Reihenfolgen der Kombinationen möchtest oder nicht, heißt:
Unterscheidest du zwischen 3*20+4*10 und 2*20+4*10+1*20?
Wenn nein dann einstufiges Vorgehen, sonst zweistufiges Vorgehen
erste Stufe:
1. lies die 27 Zahlen in ein Array1(1to27) ein und sortiere Werte in aufsteigender Folge (sollten Werte mehrfach kommen, dann kannst du das Array auch kleiner wählen.
2. dann ein Array2(1 to Aufrunden(Zielwert/Array1(1)))
3. Fülle Array2 von Array2(1) beginnend bis zum letzten Element und prüfe, ob Zielwert erreicht(dann Ausgabe als eine Kombination) oder überschritten
4. Wenn überschritten, dann lösche letztes gefülltes Element von Array2() und erhöhe das vorletzte um den nächstgrößeren aus Array1() und fülle Array2() weiter aus mit diesem Wert, solange bis Zielwert erreicht(=Ausgabe) oder überschritten (dann drittletztes Element erhöhen)
Bsp. mit Wertliste 10, 20 25, Zielwert=100
1. Array1(1)=10, Array1(2)=20,Array1(3)=25
2. Array2(1 to 10)=0
3. ausfüllen Array2 bis Array2(10)=10 - Zielwert erreicht, 1. Lösung
4. lösche Array2(10), erhöhe Array2(9) von 10(=Array1(1)) auf 20(=Array1(2)) - nächste 2. Lösung
5. lösche Array2(9), erhöhe Array2(8) von 10(=Array1(1)) auf 20(=Array1(2)) - Wert ist 90, bei nächsten Eintrag in Array2(9) mit dem Wert von Array1(2) Überschreitung (mit Wert aus Array1(1) brauchst du nicht zu prüfen, da dies nur eine Variation der schon gefundenen 2. Lösung wäre, mit Array1(3) ebenfalls nicht, da aufsteigend sortiert und schon bei Array1(2) eine Überschreitung)
6. lösche Array2(9), lösche Array2(8),erhöhe Array2(7) von 10(=Array1(1)) auf 20(=Array1(2)) - Wert 80
7. setzte Array2(8) auf 20(=Array1(2)) - Zielwert erreicht, nächste 2. Lösung
8. Schleife über die Schritte 4-7, Abbruch, wenn alles Elemente aus Array2 mit Array1(3) besetzt und Summe größer/gleich Zielwert
usw, usf
Als Ergebnis erhältst du alle eindeutigen Kombinationen ohne Beachtung der Reihenfolge
im zweiten Schritt kannst du bei Beachtung der Reihenfolge alle eindeutigen Kombinationen der bisherigen Lösungen ermitteln.
das jetzt noch in VBA zu gießen, sollte ja kein Problem sein
Gruß
Harry
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige