|
本帖最后由 香川群子 于 2014-11-22 15:26 编辑
爱疯 发表于 2014-11-22 15:12
Sub test2()
Dim a$(9), b$(999), i&, i1&, i2&, i3&, s$, j
For i = 0 To 9 Step 2
再介绍一种有趣的算法思路:- Sub test4() 'by kagawa 2014/11/22
- Dim arr, i&, i1&, i2&, i3&, j&, k&, n&, r&, s$, s1$, s2$, tms#
- tms = Timer
-
- n = 3: ReDim a&(1 To n)
- s1 = ChrW(22855) '"奇"
- s2 = ChrW(20598) '"偶"
- s = String(n, s2)
- ReDim b$(2 ^ n - 1)
- For i1 = 1 To 0 Step -1
- Mid(s, 1, 1) = IIf(i1 Mod 2, s1, s2)
- For i2 = 1 To 0 Step -1
- Mid(s, 2, 1) = IIf(i2 Mod 2, s1, s2)
- For i3 = 1 To 0 Step -1
- Mid(s, 3, 1) = IIf(i3 Mod 2, s1, s2)
- i = i1 * 4 + i2 * 2 + i3
- b(i) = s
- Next i3, i2, i1
- ' Exit Sub
-
- k = 10 ^ n - 1: ReDim c$(k): c(0) = b(0)
- For i = 1 To k
- For j = n To 1 Step -1
- If a(j) = 9 Then
- a(j) = 0
- r = r - 2 ^ (n - j)
- Else
- a(j) = a(j) + 1
- If a(j) Mod 2 Then r = r + 2 ^ (n - j) Else r = r - 2 ^ (n - j)
- Exit For
- End If
- Next
- c(i) = b(r)
- Next
- [a1].Resize(10 ^ n) = WorksheetFunction.Transpose(c)
- End Sub
复制代码 首先生成0-7这8种不同的奇偶类型对应字符,(二进制3位数的不同组合数=2^3-1=8-1=7)
然后计算每一个n位数 i 数值对应的奇偶换算值。
本代码和前面5楼第1段代码一开始的用法类似。但实现方法不同。
遗憾的是、速度并未提高。呵呵。
|
|