用VB计算排列组合
有150个数,假定它是1~150,现在要把它排列成50个数为一组的组合,保存这些组合到一个数组里并输出到text文本框、。例如:123456789101112131415...
有150个数,假定它是1~150,现在要把它排列成50个数为一组的组合,
保存这些组合到一个数组里并输出到text文本框、。
例如:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15(用1~15来举个例,1~150太长啦)
5个数为一组的组合:
1 2 3 4 5
1 2 3 4 6
1 2 3 4 7
.
.
.
1 2 3 4 15
1 2 3 5 6
1 2 3 5 7
.
.
1 2 3 5 15.....等等
折腾几天了,小弟初学的,麻烦给位大神搭救啦 展开
保存这些组合到一个数组里并输出到text文本框、。
例如:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15(用1~15来举个例,1~150太长啦)
5个数为一组的组合:
1 2 3 4 5
1 2 3 4 6
1 2 3 4 7
.
.
.
1 2 3 4 15
1 2 3 5 6
1 2 3 5 7
.
.
1 2 3 5 15.....等等
折腾几天了,小弟初学的,麻烦给位大神搭救啦 展开
5个回答
展开全部
你的想法不现实,数据量太大了,50个数的排列组合有多少种你知道吗?答案是50的阶乘,50! = 3.0414093201713 * 10 ^ 64 ,10的64次方哦!更何况你有150个数,换句话说,你想把结果保存为一个文本文件,那么把全世界的电脑硬盘全部拆下来给你,你都没办法保存这个文件!
追问
数学不好,没想到,见笑了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
老大,你要想清楚150个取50个排列 是 6.12e104,组合 是2.01e40,你是要排列还是组合?即使是计算机 没有几个月也完成不了啊
追问
组合啊,这个应该没多少数据吧,
追答
帮你写完吧,以15选5为例,150选50真心不行
Private Sub Command1_Click()
Dim m As Long
Dim arr(1 To 5)
Dim ar(1 To 15)
Dim artemp(1 To 3003)
m = 1
For i = 1 To 15
ar(i) = i
Next i
For r1 = 1 To 11
arr(1) = ar(r1)
For r2 = r1 + 1 To 12
arr(2) = ar(r2)
For r3 = r2 + 1 To 13
arr(3) = ar(r3)
For r4 = r3 + 1 To 14
arr(4) = ar(r4)
For r5 = r4 + 1 To 15
arr(5) = ar(r5)
artemp(m) = arr
m = m + 1
Next r5
Next r4
Next r3
Next r2
Next r1
Text1 = artemp(1)(1) & " " & artemp(1)(2) & " " & artemp(1)(3) & " " & artemp(1)(4) & " " & artemp(1)(5)
End Sub
最后一句给Text赋值自己改一下不知道你要什么形式输出
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用多层 for,
每个FOR要判断不等外层的FOR值
每个FOR要判断不等外层的FOR值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
x=InputBox("请输入一个数字:",,"5")
x1=x
y=InputBox("请输入一个比"&x&"小的数字:",,"3")
s=Result(x1,y)
For i=1 To y
Execute "z"&i&"=i"
Next
for i=1 to s
d=""
For j=1 To y
d = d&eval("z"&j)&" "
Next
Execute "x"&i&"=d"
Execute "z"&y&"=z"&y&"+1"
gm()
next
for i=1 to s
st=st&vbcr&eval("x"&i)&"-- "&i
next
msgbox "C("&x&","&y&")"&vbcrst&"有 "&s&" 种排列方法:"&vbcrst&st
Function Result(a,b)
sa=1:sb=1
if a<>"" and b<>"" then
for i = 1 to b
sa = sa*a
sb = sb*i
a = a-1
next
Result = sa/sb
end if
End Function
Function gm()
For q=y To 2 Step -1
If eval("z"&q)=q+x-y+1 Then
Execute "z"&q-1&"=z"&q-1&"+1"
For p=q To y
Execute "z"&p&"=z"&p-1&"+1"
next
End If
Next
End Function
x1=x
y=InputBox("请输入一个比"&x&"小的数字:",,"3")
s=Result(x1,y)
For i=1 To y
Execute "z"&i&"=i"
Next
for i=1 to s
d=""
For j=1 To y
d = d&eval("z"&j)&" "
Next
Execute "x"&i&"=d"
Execute "z"&y&"=z"&y&"+1"
gm()
next
for i=1 to s
st=st&vbcr&eval("x"&i)&"-- "&i
next
msgbox "C("&x&","&y&")"&vbcrst&"有 "&s&" 种排列方法:"&vbcrst&st
Function Result(a,b)
sa=1:sb=1
if a<>"" and b<>"" then
for i = 1 to b
sa = sa*a
sb = sb*i
a = a-1
next
Result = sa/sb
end if
End Function
Function gm()
For q=y To 2 Step -1
If eval("z"&q)=q+x-y+1 Then
Execute "z"&q-1&"=z"&q-1&"+1"
For p=q To y
Execute "z"&p&"=z"&p-1&"+1"
next
End If
Next
End Function
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1-150一行是多少个数字?没太理解你的要求
追问
就是150个数字啦,一行一个啦
第1个数字是1
第2个是2
第150个是150
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询