PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Alle Kombinationen


gsascha
12.08.2002, 14:29
oder waren das Variationen? naja, ich würde gerne alle Möglichkeiten ausgeben, z.B.:

1111
1110
1101
1011
0111
1100
1010
.
.
.
usw. ich denke, dass das am einfachsten mit einem rekursiven Aufruf geht, weiß jez aber nicht, wie ich das am besten machen könnte!


Jan Krüger
12.08.2002, 15:01
die anzahl der kombinationen rechnet sich ja ganz einfach:

(anzahl der verschiedenen möglichkeiten pro stelle) ^ (anzahl stellen)
im beispiel: 2^4 = 16.
beispielcode (ohne rekursion) in pseudocode:


ziffern = 2
zeichen_fuer_ziffern = "01"
stellen = 4
for (schleife: 0 -> (ziffern ^ stellen) - 1)
eine_kombination = ""
zaehler = schleife;
while (zaehler > 0)
eine_ziffer = zeichen_fuer_ziffern[zaehler modulo ziffern] // für basic/pascal muss da "ziffern+1" stehen
eine_kombination = eine_ziffer + eine_kombination
zaehler = zaehler / ziffern
end of while
while length(eine_kombination) < stellen
eine_kombination = zeichen_fuer_ziffern[0]; // für basic/pascal: 1 statt 0
end of while
print eine_kombination
end of for


ergebnis sollte sein:
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

viel erfolg. :)

gsascha
12.08.2002, 16:15
danke, werd mir das mal zur Gemüte führen!