请教VB中一个排列组合的问题

有N(N小于20)组已知数字,每组数字的个数不同,但每组数字没有重复的,也就是说每组数字最多只有10个。现要将它们排列组合为N位的不重复数字。比如说123,456,789三组数字,排列为147,148,149,157,158,159,……。另比如说0234,245,12,78四组数字,排列为0217,0218,0227,0228,0417等等。求代码,VB的,谢谢!
我不重复的意思是每组数字出一个数字,而不是111,444,777,0000,2222这样

整除什么?位数么?还有我想得到全部排列结果,随机不现实。

谢谢 chixun9999 的解答,我试试,不过我最初想的是使用一个自定义的循环函数,然后再函数内部再不断调用自己,实现N次循环,可是怎么也弄不来,chixun9999可以给一些提示代码么?呵呵,就像你不太明白我的题目一样,我也不是太明白你的回答。。。用电脑多了,我感觉我的表达能力和理解力都有问题。。。

有点明白了,就像彩票组合一样吧,把几个不同位置的数进行组合嘛。

分别用一个二维数组和一个一维数组进行暂存就可以啦,二维数组存储那些所谓的分组数字,再把随机得出的结果存在一维数组里,把多的数组位置存上预先设定的一个代号,表示没有数字就可以采用两个嵌套的循环进行组合数字啦。

你说的意思是排列组合的算法有点难度吧,这个是可以用循环代替的,我记得有过这样的算法操作,不过要一段时间回忆和编码。

排列组合的算法一般是用递归函数做,算法的代码会比较清晰简洁,但是可以用循环来代替递归过程,代码就复杂些,要编写完整代码恐怕你的奖励分太少,不值得花时间去搞,这里给一段给你吧:而且还有些问题,
1、注意数组都是有上限的,不能应用在组数太多和每组数字太长的地方,要想扩展它靠你自己了。2、扩展后,数组占内存大,可能会出错的。3、以下代码把数组初始化赋值的过程部分省略了,我想那对你很容易吧。

Const 组数 = 4
Dim 预选数字(1 To 5, 1 To 5) As String
Dim 组合结果(1 To 5 ^ 5) As String
Dim i As Integer, j As Integer, k As Integer
Dim st(1 To 组数) As String
Dim temp As String
Dim sx(1 To 5) As Integer '表示每个组数据选定待组合的那个数字的顺序号
sx(1) = 1: sx(2) = 1: sx(3) = 1: sx(4) = 1: sx(5) = 1
'下边开始组合
k = 1
Do
temp = ""
j = 1: sx(j) = 1
Do
If j > 组数 Or 预选数字(j, sx(j)) = "n" Then
j = j - 1
If j = 0 Then Exit Do
If temp <> "" Then temp = Left(temp, Len(temp) - 1)
sx(j) = sx(j) + 1
Else
temp = temp & 预选数字(j, sx(j))
j = j + 1
If j > 组数 Then
组合结果(k) = temp
Debug.Print temp
k = k + 1
Else
sx(j) = 1
End If
End If
Loop
If j = 0 Then Exit Do
Loop

For i = 1 To 5 ^ 5
If 组合结果(i) <> "" Then
Cells(4 + i, 6) = 组合结果(i)
Else
Exit For
End If
Next i
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-17
整除问题
得到的数首位是第一个数的首位,
第2位是第2个数的随即一个
第3位是第3个数的随即一个
第4位是第4个数的随即一个


这样分析,你会了吗
代码就自己写吧
自己动手丰衣足食
第2个回答  2009-03-19
有点晕
N位不重复的数字 N应该小于等于10吧
第3个回答  2009-03-17
不会哎~~~

用vb或者vba在excel里编一个排列组合的小程序
把问题讲具体点。第1,A1——J1只有10个数 第2,另外5个格子中A4~E4有由用户自由填入1~6的数字,并判断A4~C4三个格子的和为6,是什么意思?第3,然后分别从第一组去取A4个数,加上第二组B4个数,加上第三组C4个数,由三组中去除的数组成一个新的6个数字的组合,最后把所有取得的组合罗...

求助:vb进行数字0-9排列组合问题
Private Sub Command1_Click()Dim n As Integer, i As Integer, k As IntegerFor n = 100 To 999 k = 0 For i = 1 To 3 If InStr(Text1.Text, Mid(n, i, 1)) Then k = k + 1 Next If k > 1 Then Text2.Text = Text2.Text & n & vbCrLfNextEnd Sub ...

用VB计算排列组合
你的想法不现实,数据量太大了,50个数的排列组合有多少种你知道吗?答案是50的阶乘,50! = 3.0414093201713 * 10 ^ 64 ,10的64次方哦!更何况你有150个数,换句话说,你想把结果保存为一个文本文件,那么把全世界的电脑硬盘全部拆下来给你,你都没办法保存这个文件!

vb怎么做排列组合
这个你用循环嵌套就可以完成:窗体上添加一个列表框和一个按钮,代码如下:Option Explicit Private Sub Command1_Click()Dim A As Integer, B As Integer, C As Integer, D As Integer, E As Integer For A = 1 To 16 For B = 2 To 18 For C = 5 To 23 For D = 8 To 28 For E...

求VB排列组合的问题,在33个数中挑选6个不重复复的数的所有结果
for i=1 to n b=i mod 6 if b<> 0 then print;a(i);else print;a(i)endif next vb 的!

关于排列组合
For t4 = t3 + 1 To n - 1 For t5 = t4 + 1 To n r = r + 1 Cells(r, 1) = t1 Cells(r, 2) = t2 Cells(r, 3) = t3 Cells(r, 4) = t4 Cells(r, 5) = t5 Next Next Next Next Next End Sub 执行以上的宏后, 你要的792行答案, 会出现在A1:E792 如在A1:A5...

用vb或者vba在excel里编一个排列组合的小程序
VBA语言:在A列中输入一列数据 ,自动排列组合,结果按顺序显示在B列:Private Sub numzh()Dim h, l, n1, n2 h = [a65536].End(xlUp).Row l = 1 For n1 = 1 To h Range("b" & l) = Range("a" & n1)l = l + 1 Next n2 = 1 Do While n1 > h For n1 = 1 To h ...

VB编程(排列组合) 急用,谢谢!
C272。C64是什么意思?有什么条件 从给定的六个不同元素中选出4个随机选吗 在剩下的27个元素中选出俩个也是随机的吗 还是把之中的虽有可能都列出来啊 说明白

请高手帮我用VB编一个双色球机选程序
1. 首先,从33个红球中随机排除3个号码。2. 然后,将剩余的红球进行随机排列组合。3. 接着,让这个随机排列过程持续一段时间。4. 最后,将排列好的红球分为5组,每组对应一个开奖号码。5. 蓝球的选取过程与红球类似,也是先排除一些号码,然后进行随机分组。这样的改写旨在保留您原始想法的概率本质,...

VB中怎样输出所有的排列组合情况
你那是输出间隔的问题,还没等你看清楚下一行已经输出并覆盖了前一次的结果 你可以用timer控制输出间隔以让你看清楚 还可以将text弄大一些,将结果一行一行的显示出来

相似回答