|
代码繁琐一点,但速度效率最高的直接循环、数组检查是否重复。
不含输出时比较,速度快5-6倍。
- Sub test()
- Dim a&(9), b(113400, 0), i1&, i2&, i3&, i4&, i5&, i6&, i7&, i8&, i9&, i10&, k&, s$, tms#
- tms = Timer
- s = "0123456789"
- For i1 = 0 To 8
- a(i1) = 1: Mid(s, 1, 1) = i1
- For i2 = i1 + 1 To 9
- a(i2) = 1: Mid(s, 2, 1) = i2
-
- For i3 = 0 To 8
- If a(i3) = 0 Then
- a(i3) = 1: Mid(s, 3, 1) = i3
- For i4 = i3 + 1 To 9
- If a(i4) = 0 Then
- a(i4) = 1: Mid(s, 4, 1) = i4
-
- For i5 = 0 To 8
- If a(i5) = 0 Then
- a(i5) = 1: Mid(s, 5, 1) = i5
- For i6 = i5 + 1 To 9
- If a(i6) = 0 Then
- a(i6) = 1: Mid(s, 6, 1) = i6
-
- For i7 = 0 To 8
- If a(i7) = 0 Then
- a(i7) = 1: Mid(s, 7, 1) = i7
- For i8 = i7 + 1 To 9
- If a(i8) = 0 Then
- a(i8) = 1: Mid(s, 8, 1) = i8
-
- For i9 = 0 To 8
- If a(i9) = 0 Then
- a(i9) = 1: Mid(s, 9, 1) = i9
- For i10 = i9 + 1 To 9
- If a(i10) = 0 Then
- Mid(s, 10, 1) = i10
- b(k, 0) = s
- k = k + 1
- End If
- Next
- a(i9) = 0
- End If
- Next
-
- a(i8) = 0
- End If
- Next
- a(i7) = 0
- End If
- Next
-
- a(i6) = 0
- End If
- Next
- a(i5) = 0
- End If
- Next
-
- a(i4) = 0
- End If
- Next
- a(i3) = 0
- End If
- Next
-
- a(i2) = 0
- Next
- a(i1) = 0
- Next
- MsgBox Format(Timer - tms, "0.00s ") & k
- [e:e] = "": [e1].Resize(k) = b
- End Sub
复制代码 |
评分
-
查看全部评分
|