笔者曾写过一个递归与组合的算法(http://www.csdn.net/Develop/read_article.asp?id=23809),下面给出一个排列的递归算法,请大家指教。
Private Sub Command1_Click() ' 列出数组a 的全排列
Dim a(8) As String, temp As String
For i = 0 To 8
a(i) = i
Next
temp = permutation(a, UBound(a))
Debug.Print temp
Debug.Print "共有 " & UBound(Split(temp, vbCrLf)) + 1 & " 种排法!"
End Sub
Function addxtostr(ByVal x0 As String, ByVal xadd As String) As String ' eg: x0: "1,2,3,4",we will add 5 to x0
Dim temp, temp2, all() As String, i As Long
temp = Split(x0, ",")
ReDim all(UBound(temp) + 1)
all(0) = xadd & "," & x0 ' return "5,1,2,3,4"
For i = 1 To UBound(all)
temp2 = temp
temp2(i - 1) = temp2(i - 1) & "," & xadd ' add 5 between every two contunious number
all(i) = Join(temp2, ",")
Next
addxtostr = Join(all, vbCrLf)
Set temp = Nothing
Set temp2 = Nothing
Erase all
End Function
Function permutation(ByRef a() As String, ByVal n As Long) As String '列出数组a 的前n-1 个元素的全排列
Dim i As Long, temp, all() As String
If n = 0 Then permutation = a(0)
If n = 1 Then permutation = a(0) & "," & a(1) & vbCrLf & a(1) & "," & a(0)
If n > 1 Then
temp = Split(permutation(a, n ), vbCrLf) ' 递归
ReDim all(UBound(temp))
For i = 0 To UBound(temp)
all(i) = addxtostr(temp(i), a(n))
Next
permutation = Join(all, vbCrLf)
End If
Erase all
End Function
分享到:
相关推荐
递归求算排列算法;递归求算排列算法;递归求算排列算法;
递归求全排列.rar 递归求全排列.rar 递归求全排列.rar 递归求全排列.rar 递归求全排列.rar 递归求全排列.rar 递归求全排列.rar
排列的递归算法(递归求*排列*),很简洁。
易语言递归法取排列组合例程源码,递归法取排列组合例程,子程序_取组合
数字排列组合是个经典的算法问题,它很通俗易懂,适合不懂业务的人...这种算法常用递归或迭代来实现,单当M=14时,中间结果数量已经过亿,再大的话很容易超过单台机器的处理能力,所以我用hadoop来实现多机分别处理。
PHP递归实现一位数组的排列算法。欢迎下载和评论。
递归法取排列组合易语言源码例程.rar 递归法取排列组合易语言源码例程.rar 递归法取排列组合易语言源码例程.rar 递归法取排列组合易语言源码例程.rar 递归法取排列组合易语言源码例程.rar 递归法取排列组合...
用递归算法实现的简单排列生成器 其中K是开始排列点,m是数组的长度
Please use recursion(递归)to get fibonacci numbers(一种整数数列). The user will specify(指定,详细说明) how many of the numbers he or she wants to print. You can use the main function to print ...
易语言源码递归法取排列组合易语言源码例程.rar 易语言源码递归法取排列组合易语言源码例程.rar 易语言源码递归法取排列组合易语言源码例程.rar 易语言源码递归法取排列组合易语言源码例程.rar 易语言源码递归法...
排列组合一个练习以及递归输出排列的PPT
递归实现排列型枚举.md
java m取n 重复 不重复 排列组合 for循环嵌套递归
递归求解几类排列组合问题,求组合数列的情况
可以节省(n-1)!次递归的排列生成工具类(java).txt
第一次上传,多多支持 棋盘覆盖算法 递归排列 C++实现
对案例进行排列组合的小程序
算法设计与分析实验报告:递归与分治策略,用python写的,附源码。主要处理问题如下: 1.ackerman函数实现; 2.大数划分; 3. 数据集合{1,2,3,4,5,6,7,8,9,10}的排列组合;
这个程序绝对绝对能够加深对递归算法的理解。 并且对理解随机数的产生有帮助。另外还实现了全排列。
排列与组合的Java递归实现.doc