不知道大家买不买足彩。
足彩现在一共要猜14场比赛
我想把一个复式里面的每个排列都一行一行的排出来
放到一个文本文件里面。
比如我想买的复式是
31,31,31,31,31,31,31,31,31,31,31,31,31,31
那么就一共有2的14次方次种组合
每一个组合我都想排列出来?
有没有快速的,好的方法。
关键是速度要快的。
谢了。
有兴趣可以加我QQ398188218
足彩现在一共要猜14场比赛
我想把一个复式里面的每个排列都一行一行的排出来
放到一个文本文件里面。
比如我想买的复式是
31,31,31,31,31,31,31,31,31,31,31,31,31,31
那么就一共有2的14次方次种组合
每一个组合我都想排列出来?
有没有快速的,好的方法。
关键是速度要快的。
谢了。
有兴趣可以加我QQ398188218
Dim a(13) As Integer, b(13) As String, c(16383) As String, i As Integer, j As Integer
For i = 0 To 13
a(i) = 2 ^ i
Next
For i = 0 To 16383
For j = 0 To 13
b(j) = i And a(j)
b(j) = IIf(b(j) > 0, 1, 3)
Next
c(i) = i + 1 & vbTab & Join(b, ",")
Next
Open "d:\1234.txt" For Binary As #1
Put #1, , Join(c, vbCrLf)
Close #1
MsgBox "ok"
End Sub
你要是准备用狼行给出的算法,你可以把他算法里针对你顶贴里的数字(那13个数字),用变量代替!
每次程序运行手动输入13个数接着赋值给一个数组(a(13)),或13 个变量~!
Dim x(13) As String '元素个数随你自己定义
Dim i As Long, temp() As String
For i = 0 To 13 '每个复式组合自己定义
x(i) = IIf(i < 4, 310, 31)
Next
getall 14, x, temp, "d:\123.txt" '将全部组合情况通过临时数组temp保存到"d:\123.txt"
End Sub
Sub getall(ByVal n As Integer, ByRef a() As String, ByRef temp() As String, Optional ByVal txtpath As String = "d:\123.txt") '将数组a()取前n个元素,每个元素分别取1位,组成的所有新组合保存到TEMP(),并保存到文本文件txtpath(默认d:\123.txt)
Dim i As Long, j As Long, length() As Integer, max As Long, s() As StringReDim length(1 To n) '每个元素的位数
For i = 1 To n
length(i) = Len(a(i - 1))
Next
If n = 1 Then '取1个数的情况
max = length(1)
ReDim temp(1 To max)
For i = 1 To max
temp(i) = Mid(a(0), i, 1)
Next
End IfIf n > 1 Then
getall n - 1, a, s '递归
max = UBound(s)
ReDim temp(1 To max * length(n))
For i = 1 To max
For j = 1 To length(n)
temp((j - 1) * max + i) = s(i) & "," & Mid(a(n - 1), j, 1)
Next
Next
Erase s
End IfIf n = UBound(a) + 1 Then
If Dir(txtpath) > "" Then Kill txtpath
Open txtpath For Binary As #1
Put #1, , Join(temp, vbCrLf)
Close #1
MsgBox UBound(temp) & " 种组合!", vbInformation, "Ok"
Erase temp
End If
End Sub