本帖最后由 mmc998 于 2015-2-27 06:19 编辑
选出如此的 组合,比如行2的六码组合,987,184,607,501,953,436,组成的20个三号码组合,第一个987,184,607,不重复个数是7。第二个987,184,501,不重复个数也是7。第三个987,184,953,不重复个数也是7.第四个987,184,436,不重复个数也是7。第五个987,607,501,不重复个数也是7。第六个987,607,953,不重复个数也是7。第七个987,607,436,不重复个数也是7。第八个987,501,953,不重复个数也是7。第九个987,501,436,不重复个数是九。第十个,987,953,436,不重复个数也是7。第十一个,184,607,501,不重复个数也是7。第十二个184,607,953,不重复个数是9.第十三个,184,607,436,不重复个数也是7。第十四个184,501,953,不重复个数也是7。第十五个,184,501,436,不重复个数也是7,第十六个184,953,436,不重复个数也是7。第 十七个607,501,953,不重复个数也是7。第十八个,607,501,436,不重复个数也是7。第十九个607,953,436,不重复个数也是7。第二十个,501,953,436,不重复个数也是7。
无解,代码取符合条件的组合个数为18 - Sub Macro1()
- Dim arr, brr, w(9), i&, n%, j%, j2%, j3%, s%
- [g:g] = ""
- arr = Range("a2").CurrentRegion
- ReDim brr(1 To UBound(arr), 1 To 1)
- n = UBound(arr, 2)
- For i = 1 To UBound(arr)
- s = 0
- For j = 1 To n - 2
- For j2 = j + 1 To n - 1
- For j3 = j2 + 1 To n
- zf = arr(i, j) & arr(i, j2) & arr(i, j3)
- For k = 1 To 9
- z = Mid$(zf, k, 1)
- w(z) = z
- Next
- If Len(Join(w, "")) = 7 Then s = s + 1 '不重复个数7
- Erase w
- Next
- Next
- Next
- If s = 18 Then brr(i, 1) = "符合" '符合条件的组合个数
- Next
- Range("g2").Resize(UBound(brr)) = brr
- End Sub
复制代码
|