VB全排列算法.假设有9个数,123456789,打印所以的排列方式(即9阶乘种).用递归或更好的方法求解.例如:123456789123456798123456879123456897...谢谢大家的热情回答,都不错,“collapsar147”和“ XOooZ”算
来源:学生作业帮助网 编辑:六六作业网 时间:2025/02/02 04:05:06
VB全排列算法.假设有9个数,123456789,打印所以的排列方式(即9阶乘种).用递归或更好的方法求解.例如:123456789123456798123456879123456897...谢谢大家的热情回答,都不错,“collapsar147”和“ XOooZ”算
VB全排列算法.
假设有9个数,123456789,打印所以的排列方式(即9阶乘种).用递归或更好的方法求解.
例如:
123456789
123456798
123456879
123456897
.
.
.
谢谢大家的热情回答,都不错,“collapsar147”和“ XOooZ”算法本质是一样的,只能选一个回答,那就给先回答者.
VB全排列算法.假设有9个数,123456789,打印所以的排列方式(即9阶乘种).用递归或更好的方法求解.例如:123456789123456798123456879123456897...谢谢大家的热情回答,都不错,“collapsar147”和“ XOooZ”算
新建一个工程,在窗体上新建一个text1,一个command1,把以下代码复制到工程中运行试试
Option Explicit
Private List() As String
Public 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 Sub
Private Sub Form_Load()
Form1.AutoRedraw = True
End Sub
Public Function Swap(ByRef Num1 As String, ByRef Num2 As String) '交换两个数
tmp = Num1
Num1 = Num2
Num2 = tmp
End Function
Public 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
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 Function
运行效果