作业帮 > 综合 > 作业

VB全排列算法.假设有9个数,123456789,打印所以的排列方式(即9阶乘种).用递归或更好的方法求解.例如:123

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/05/25 22:50:16
VB全排列算法.
假设有9个数,123456789,打印所以的排列方式(即9阶乘种).用递归或更好的方法求解.
例如:
123456789
123456798
123456879
123456897
.
.
.
谢谢大家的热情回答,都不错,“collapsar147”和“ XOooZ”算法本质是一样的,只能选一个回答,那就给先回答者.
VB全排列算法.假设有9个数,123456789,打印所以的排列方式(即9阶乘种).用递归或更好的方法求解.例如:123
新建一个工程,在窗体上新建一个text1,一个command1,把以下代码复制到工程中运行试试Option ExplicitPrivate List() As StringPublic index&, tmp$Private Sub Command1_Click()    ReDim List(Len(Trim(Form1.Text1.Text)))    For index = 1 To Len(Trim(Form1.Text1.Text))        List(index) = Mid(Form1.Text1.Text, index, 1)    Next index    Perm List, 1, Len(Trim(Form1.Text1.Text))End SubPrivate Sub Form_Load()    Form1.AutoRedraw = TrueEnd SubPublic Function Swap(ByRef Num1 As String, ByRef Num2 As String) '交换两个数    tmp = Num1    Num1 = Num2    Num2 = tmpEnd FunctionPublic Function Perm(ByRef ListTar() As String, ByVal k As Long, ByVal m As Long)  '全排列函数    Dim i&    If k > m Then        For i = 1 To m            Print ListTar(i);        Next i        Print    Else        For i = k To m            Swap ListTar(k), ListTar(i)            Perm ListTar, k + 1, m            Swap ListTar(k), ListTar(i)        Next i    End IfEnd Function运行效果