Anzahl Schleifendurchläufe -> Kombinatorik
Verfasst: 02.04.2008 20:03
Hallo zusammen,
wer von Euch war gut in Mathe und hat Ahnung von Kombinatorik ???
Ich habe folgendes Schleifenkonstrukt und müsste vor Eintritt in die Routine die Anzahl der Schleifendurchläufe in Abhängigkeit der beiden Variablen ANZAHL und TIEFE kennen die die innerste Schleife macht
Zur Beachtung:
Die Schleifen LP1 bis LP7 laufen von 0 bis zum Schleifenende, die innerste Schleife LP8 von 1 bis zum Schleifenende.
Die Schleifenenden sind in Abhängigkeit der Tiefe entweder 0 oder gleich der Variablen Anzahl - sh. Code
Die Schleifen 1-8 werden mit Continue übersprungen wenn der Schleifenzähler einen Wert hat, den schon eine vorherige Schleife hat und bei den Schleifen 1-7 (nicht in der innersten) muss die Laufvar. noch dazu ungleich NULL sein.
Die beiden Variablen am Anfang Anzahl und Tiefe habe ich nur mal so vorbelegt, diese sind im richtigen Programm variabel.
[EDIT]
Tiefe kann niemals den Wert 1 haben, nur von 2 bis 8
[END EDIT]
Danke schonmal im voraus
LG
Joachim
Hier der Code
wer von Euch war gut in Mathe und hat Ahnung von Kombinatorik ???
Ich habe folgendes Schleifenkonstrukt und müsste vor Eintritt in die Routine die Anzahl der Schleifendurchläufe in Abhängigkeit der beiden Variablen ANZAHL und TIEFE kennen die die innerste Schleife macht
Zur Beachtung:
Die Schleifen LP1 bis LP7 laufen von 0 bis zum Schleifenende, die innerste Schleife LP8 von 1 bis zum Schleifenende.
Die Schleifenenden sind in Abhängigkeit der Tiefe entweder 0 oder gleich der Variablen Anzahl - sh. Code
Die Schleifen 1-8 werden mit Continue übersprungen wenn der Schleifenzähler einen Wert hat, den schon eine vorherige Schleife hat und bei den Schleifen 1-7 (nicht in der innersten) muss die Laufvar. noch dazu ungleich NULL sein.
Die beiden Variablen am Anfang Anzahl und Tiefe habe ich nur mal so vorbelegt, diese sind im richtigen Programm variabel.
[EDIT]
Tiefe kann niemals den Wert 1 haben, nur von 2 bis 8
[END EDIT]
Danke schonmal im voraus
LG
Joachim
Hier der Code
Code: Alles auswählen
Count = 0
Anzahl = 10
Tiefe = 8 ; maximal 8 da nur 8 verschachtelte Schleifen
LP1Ende = Anzahl
LP2Ende = Anzahl
LP3Ende = Anzahl
LP4Ende = Anzahl
LP5Ende = Anzahl
LP6Ende = Anzahl
LP7Ende = Anzahl
LP8Ende = Anzahl
If Tiefe = 2
LP1Ende = 0
LP2Ende = 0
LP3Ende = 0
LP4Ende = 0
LP5Ende = 0
LP6Ende = 0
ElseIf Tiefe = 3
LP1Ende = 0
LP2Ende = 0
LP3Ende = 0
LP4Ende = 0
LP5Ende = 0
ElseIf Tiefe = 4
LP1Ende = 0
LP2Ende = 0
LP3Ende = 0
LP4Ende = 0
ElseIf Tiefe = 5
LP1Ende = 0
LP2Ende = 0
LP3Ende = 0
ElseIf Tiefe = 6
LP1Ende = 0
LP2Ende = 0
ElseIf Tiefe = 7
LP1Ende = 0
ElseIf Tiefe = 8
EndIf
For LP1 = 0 To LP1Ende
For Lp2 = 0 To LP2Ende
If Lp2 = LP1 And Lp2 <> 0
Continue
EndIf
For LP3 = 0 To LP3Ende
If (LP3 = Lp2 Or LP3 = LP1) And LP3 <> 0
Continue
EndIf
For LP4 = 0 To LP4Ende
If (LP4 = LP3 Or LP4 = Lp2 Or LP4 = LP1) And LP4 <> 0
Continue
EndIf
For LP5 = 0 To LP5Ende
If (LP5 = LP4 Or LP5 = LP3 Or LP5 = Lp2 Or LP5 = LP1) And LP5 <> 0
Continue
EndIf
For LP6 = 0 To LP6Ende
If (LP6 = LP5 Or LP6 = LP4 Or LP6 = LP3 Or LP6 = Lp2 Or LP6 = LP1) And LP6 <> 0
Continue
EndIf
For LP7 = 0 To LP7Ende
If (LP7 = LP6 Or LP7 = LP5 Or LP7 = LP4 Or LP7 = LP3 Or LP7 = Lp2 Or LP7 = LP1) And LP7 <> 0
Continue
EndIf
For LP8 = 1 To LP8Ende
If (LP8 = LP7 Or LP8 = LP6 Or LP8 = LP5 Or LP8 = LP4 Or LP8 = LP3 Or LP8 = Lp2 Or LP8 = LP1) ;And LP8 <> 0
Continue
EndIf
Count = Count +1
Next LP8
Next LP7
Next LP6
Next LP5
Next LP4
Next LP3
Next Lp2
Next LP1
MessageRequester("","Insgesamt waren dies "+Str(Count) + " Schleifendurchläufe")