vb.net 排列组合算法想用vb.net写一个字典生成器,遇到了一个问题,不知道排列组合的算法怎么写比如从 字母(大小写)+数字,一共62个字符中任取N个进行组合排列,请问代码怎么写?谢谢递归的

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 09:26:21

vb.net 排列组合算法想用vb.net写一个字典生成器,遇到了一个问题,不知道排列组合的算法怎么写比如从 字母(大小写)+数字,一共62个字符中任取N个进行组合排列,请问代码怎么写?谢谢递归的
vb.net 排列组合算法
想用vb.net写一个字典生成器,遇到了一个问题,不知道排列组合的算法怎么写
比如从 字母(大小写)+数字,一共62个字符中
任取N个进行组合排列,请问代码怎么写?
谢谢
递归的方法可以实现,但是效率太低.

vb.net 排列组合算法想用vb.net写一个字典生成器,遇到了一个问题,不知道排列组合的算法怎么写比如从 字母(大小写)+数字,一共62个字符中任取N个进行组合排列,请问代码怎么写?谢谢递归的
以前写过一个类似的,实现 0~N 全排列算发的vb.net代码,用递归实现的,你可以参考一下:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim result As String = ""
N = 6
ExePerm()
For i As Integer = 0 To UBound(TotalArray)
result += TotalArray(i).ToString & vbCrLf
Next
TextBox1.Text = result
End Sub
Private List() As Integer
Private N As Integer '城市数
Private Sub ExePerm()
ReDim List(N - 1)
For i As Integer = 0 To N - 1
List(i) = i
Next
Perm(List, 0, N - 1)
End Sub
Private TotalArray() As String '输出全排列结果
Private I_t As String = -1
Private Sub Perm(ByRef ListTar() As Integer, ByVal k As Integer, ByVal m As Integer)
Dim i As Integer
If k > m Then
I_t += 1
ReDim Preserve TotalArray(I_t)
For i = 0 To m
TotalArray(I_t) += (ListTar(i)).ToString
Next i
Else
For i = k To m
Swap(ListTar(k), ListTar(i))
Perm(ListTar, k + 1, m)
Swap(ListTar(k), ListTar(i))
Next i
End If
End Sub
Private Sub Swap(ByRef Num1 As String, ByRef Num2 As String)
Dim tmp As Integer
tmp = Num1 : Num1 = Num2 : Num2 = tmp
End Sub

End Class