Rubrik: Variablen/Strings · Algorithmen/Mathematik | VB-Versionen: VB4, VB5, VB6 | 16.12.00 |
Rekursive Permutation Wollten Sie schon immer einmal wissen, wieviele Kombinationmöglichkeiten ein Zahlenschloss besitzt und welche Zahlenkombinationen alle möglich sind?... | ||
Autor: Heinz Prelle | Bewertung: | Views: 24.767 |
www.visual-basic5.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Wollten Sie schon immer einmal wissen, wieviele Kombinationmöglichkeiten ein Zahlenschloss besitzt und welche Zahlenkombinationen alle möglich sind? Oder wollen/müssen Sie wissen, welche Buchstaben-Kombinationen sich aus einem bestimmten Wort generieren lassen?
Die nachfolgende Routine liefert Ihnen das Ergebnis.
' Beispiel : Rekursive Permutation. Private strPermutation As String Private strZeichen As String Private intArray_Pos() As Integer Private intArray_Pos_Zeiger As Integer Private strErgebnis() As String Private lngCount As Long Public Sub Rekursive_Permutation(strUebergabe As String) strZeichen = strUebergabe intArray_Pos_Zeiger = -1 ReDim intArray_Pos(Len(strZeichen) - 1) Call Permutation(0) End Sub Private Sub Permutation(intX As Integer) Dim i As Integer intArray_Pos_Zeiger = intArray_Pos_Zeiger + 1 intArray_Pos(intX) = intArray_Pos_Zeiger If intArray_Pos_Zeiger = Len(strZeichen) Then strPermutation = "" For i = 0 To UBound(intArray_Pos) strPermutation = strPermutation & _ Mid$(strZeichen, intArray_Pos(i), 1) Next i lngCount = lngCount + 1^ ReDim Preserve strErgebnis(lngCount) strErgebnis(lngCount) = strPermutation Else For i = 0 To Len(strZeichen) - 1 If intArray_Pos(i) = 0 Then Call Permutation(i) Next i End If intArray_Pos_Zeiger = intArray_Pos_Zeiger - 1 intArray_Pos(intX) = 0 End Sub
Beispiel:
Übergeben Sie der Prozedur Rekursive_Permutation die Zahlen- bzw. Buchstabenkombination. Im Array strResult() werden alle möglichen Kombinationen gespeichert. Die Anzahl der Kombinationsmöglichkeiten sagt Ihnen die Variable lngCount.
strKombination = "ABCD" ' oder z.B. 1234 Call Rekursive_Permutation(strKombination) ' Anzahl Kombinationsmöglichkeiten Debug.Print lngCount ' alle möglichen Kombinationen Dim i As Long For i = 1 To lngCount Debug.Print strResult(i) Next i