vb .net перестановка строк. перестановка или комбинация?
у меня есть ряд строк, как этоC - F - A - M
, я хочу создать комбинацию из этого с условием:
не допускается одна и та же комбинация, даже порядок отличается. например
ФК - М
CF - M
если строковый массив содержит> = 3 элемента, он сгенерирует 2 & 3 itemset, если 2 элемента, то он сгенерирует только 2 itemset
ниже мой код мой код генерирует результат как правую часть изображения
мой вопрос, какой метод я должен использовать? это перестановка, комбинация или другие вещи? и в псевдокоде, на что будет похож мой случай?
вот мой код
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
вот скриншот с требованием
и вот скриншот программы