title image


Smiley Re: Das Münzproblem rekursiv lösen...
Ich glaube, ich habe es geschafft, diese Aufgabe rekursiv zu lösen *freu!

Das Problem ist nur, dass bei größeren Beträgen doch die Anzahl der Möglichkeiten riesig werden und dann evtl. mal ein Stapelüberlauf auftreten kann!

Jetzt wäre es noch schön, wenn das Programm nur die "echten" Kombinationen ausgibt.

Also nach Ausgabe von

5=1+2+1+1



nicht auch noch die Lösungen:

5=2+1+1+1 oder 1+1+1+2 oder 1+1+2+1

das ist ja alles das selbe!

Das erweist sich allerdings als etwas schwieriger, finde ich* grübel!



Wer kriegt das auch noch hin?







Dim n As Integer 'Geldbetrag oder Restbetrag

Dim Folge(20) As Integer 'Jeweilige Münzkombination merken

Dim Münztypen(5) 'Münztypen, hier 1- 2- und 5-Euro-Münzen

Dim AnzMünzen As Integer 'Anzahl der Münztypen, hier 3



Sub Münzen()



AnzMünzen = 3

Münztypen(1) = 1 'die 1-Euro-Münze

Münztypen(2) = 2 'die 2-Euro-Münze

Münztypen(3) = 5 'die 5-Euro-Münze



g = 10 'Geldbetrag, der in alle möglichen Kombinationen

'von Münzen aufgeteilt werden soll. hier als Beispiel mal 5 Euro



Zerlegung 1, g



End Sub





Sub Zerlegung(ebene, n) 'Ebene in der Baumstruktur, Restbetrag

If n = 0 Then ' Wenn alles Geld in Münzen zerlegt wurde

Debug.Print

For i = 1 To ebene - 1

Debug.Print Folge(i) 'Ausgabe im VBA-Direktfenster

Next i

Else 'Wenn noch Geld aufgeteilt werden muß

For i = 1 To AnzMünzen 'gehe alle Münztypen durch

If n - Münztypen(i) >= 0 Then 'Restbetrag n noch größer als Münztyp?

Folge(ebene) = Münztypen(i)

Zerlegung ebene + 1, n - Münztypen(i)

End If

Next i

End If

End Sub





geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: