要从100个人中,选取10个出来,不能重复,有17310309456440种情况,如何把所有的
具体情况全部罗列出来呢?如:
1,2,3,4,5,6,7,8,9,10
1,2,3,4,5,6,7,8,9,11
1,2,3,4,5,6,7,8,9,12
1,2,3,4,5,6,7,8,9,13
………………………………
………………………………
………………………………
91,92,93,94,95,96,97,98,99,100(当然,不一定要按这种顺序组合)
我试过用10层的for-next循环,程序难看得要死,简直就是手动运算,失败!
江湖救急啊,各位大侠赶快出手相助!!!!
具体情况全部罗列出来呢?如:
1,2,3,4,5,6,7,8,9,10
1,2,3,4,5,6,7,8,9,11
1,2,3,4,5,6,7,8,9,12
1,2,3,4,5,6,7,8,9,13
………………………………
………………………………
………………………………
91,92,93,94,95,96,97,98,99,100(当然,不一定要按这种顺序组合)
我试过用10层的for-next循环,程序难看得要死,简直就是手动运算,失败!
江湖救急啊,各位大侠赶快出手相助!!!!
http://www.programfan.com/article/showarticle.asp?id=2237
dim i as long
dim j as longfor i=0 to 99
n(i)=i+1
nextfor i=0 to 80
for j=i+9 to 99
debug.print n(i)
debug.print n(i+1)
debug.print n(i+2)
debug.print n(i+3)
debug.print n(i+4)
debug.print n(i+5)
debug.print n(i+6)
debug.print n(i+7)
debug.print n(i+8)
debug.print n(j)
next
next隨便想了一下,不知道對不對,你測試一下。
Private Sub Command1_Click()
Randomize
Dim i As Integer
Dim j As Integer
Dim intVal As Integer
Dim a(1 To 10) As Integer
For i = 1 To 10
Flag: intVal = Rnd * 99 + 1
For j = 1 To i - 1
If intVal = a(j) Then GoTo Flag
Next
a(i) = intVal
Debug.Print a(i) Next
End Sub
Private Sub Command1_Click()
Dim n(1 To 100) As Long
Dim i As Long
Dim j As Long
Dim s As String
For i = 1 To 100
n(i) = i
NextFor i = 1 To 80
For j = i + 9 To 100
s = n(i)
s = s & n(i + 1)
s = s & n(i + 2)
s = s & n(i + 3)
s = s & n(i + 4)
s = s & n(i + 5)
s = s & n(i + 6)
s = s & n(i + 7)
s = s & n(i + 8)
s = s & n(j) & vbCrLf
text1.Text = text1.Text & s
Next j
Next i
Private Sub Command1_Click()
Dim n(1 To 100) As Long
Dim i As Long
Dim j As Long
Dim s As String
For i = 1 To 100
n(i) = i
NextFor i = 1 To 80
For j = i + 9 To 100
s = n(i)
s = s & n(i + 1)
s = s & n(i + 2)
s = s & n(i + 3)
s = s & n(i + 4)
s = s & n(i + 5)
s = s & n(i + 6)
s = s & n(i + 7)
s = s & n(i + 8)
s = s & n(j) & vbCrLf
text1.Text = text1.Text & s
Next j
Next i
End Sub
Private Sub Command1_Click()
Dim n(1 To 100) As Long
Dim i As Long
Dim j As Long
Dim s As String
For i = 1 To 100
n(i) = i
Next
For i = 1 To 80
For j = i + 9 To 100
s = n(i)
s = s & n(i + 1)
s = s & n(i + 2)
s = s & n(i + 3)
s = s & n(i + 4)
s = s & n(i + 5)
s = s & n(i + 6)
s = s & n(i + 7)
s = s & n(i + 8)
s = s & n(j) & vbCrLf
text1.Text = text1.Text & s
Next j
Next i
End Sub
那么得花17310.309456440的秒
折合起来大约是4.8个小时如果程序运行时间少于4个小时的,那几乎可以肯定该程序有问题(别告诉我你用超级计算机)何况不可能“每个时钟频率能执行1次选取”
因为就算是空循环都得花若干个指令的,那就不知道是多少个时钟频率了
何况在VB IDE中是解析运行程序,速度不知道慢多少个数量级
这样的问题是无法用现在的家用计算机解决的(除非你能忍受漫长的处理时间)
============================
但为什么我怎么看那段代码都不象能解决你的问题??????上面 zyl910(910:分儿,我又来了!) 兄还没有计算显示结果甚至是保存结果的时间至于要存储的话,假定有一个很好很好的压缩算法,能用1byte的空间储存一个结果,那么总空间需要:17310309456440byte≈16904599078kB≈16508397MB≈16121GB≈15.74TB
TB级的储存设备,不是一般人办到的吧。。