vb .net permutacja łańcucha. permutacja czy kombinacja?
mam dość takich sznurkówC - F - A - M
. Chcę utworzyć kombinację z tym z warunkiem:
nie ma takiej samej kombinacji, nawet kolejność jest inna. na przykład
FC - M
CF - M
jeśli tablica ciągów zawiera> = 3 element, wygeneruje 2 i 3 zestaw elementów, jeśli 2 element to wygeneruje tylko 2 zestaw elementów
poniżej jest mój kod. mój kod generuje wynik jak prawa część obrazu
moje pytanie brzmi: jakiej metody należy użyć? czy to permutacja, kombinacja czy inne rzeczy? a w pseudokodzie jaki byłby mój przypadek?
oto mój kod
Public Class permute
Dim ItemUsed() As Boolean
Dim pno As Long, pString As String
Dim inChars() As Char = {"c", "f", "a", "m"}
Private Sub permute_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Sub Permute(ByVal K As Long)
ReDim ItemUsed(K)
pno = 0
Dim i As Integer
For i = 2 To K
Permutate(i, 1)
tb.Text = K
Next
End Sub
Private Sub Permutate(ByVal K As Long, ByVal pLevel As Long)
Dim i As Long, Perm As String
Perm = pString
For i = 0 To K - 1
If Not ItemUsed(i) Then
If pLevel = 1 Then
pString = inChars(i)
Else
pString += inChars(i)
End If
If pLevel = K Then
pno = pno + 1
Results.Text += _
pno & " " & " = " & " " & pString & vbCrLf
Exit Sub
End If
ItemUsed(i) = True
Permutate(K, pLevel + 1)
ItemUsed(i) = False
pString = Perm
End If
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Permute(tb.Text)
End Sub
Private Sub tb_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tb.TextChanged
If tb.Text = "" Then
Results.Text = ""
Else
Permute(tb.Text)
End If
End Sub
End Class
Oto zrzut ekranu wymagań
a oto zrzut ekranu programu