|
因为是依据递归算法,所以4楼代码得到的组合结果,并非按字典顺序排列。
如:a; ab; abc; ac; b; bc; c
下面代码在递归过程中加入了数组记录状态的部分,以便按字典顺序返回结果。
如:a; b; c; ab; ac; bc; abc
这个就比较高级一点了,呵呵。- Dim jg(), k&, n&, s$
- Sub QZH2()
- s = [a1]: n = Len(s): ReDim jg(2 ^ n, 1)
- k = 0: Call dgQZH2(1, 0)
- [a3].CurrentRegion = "": [a2].Resize(k + 1) = jg
- End Sub
- Sub dgQZH2(i&, j&) 'by kagawa 2014/11/28 字典順
- Dim l&
- For j = j To k
- For l = jg(j, 1) + 1 To n
- k = k + 1: jg(k, 0) = jg(j, 0) & Mid(s, l, 1): jg(k, 1) = l
- Next
- Next
- If i < n Then Call dgQZH2(i + 1, j)
- End Sub
复制代码 |
评分
-
查看全部评分
|