要从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.   

    看看这个,自己改:
    http://www.programfan.com/article/showarticle.asp?id=2237
      

  2.   

    楼上的,这是C还是C++啊?可怜我是VB的大菜虫!!
      

  3.   

    dim n(99) as long
    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隨便想了一下,不知道對不對,你測試一下。
      

  4.   

    看看我这个合适不?
     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
      

  5.   

    这道题算是完满解决了,这是我对vansoft的改进版:
    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
      

  6.   

    发错了,再发一次!这道题算是完满解决了,这是我对(vansoft)的改进版:  
    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  
      

  7.   

    //要从100个人中,选取10个出来,不能重复,有17310309456440种情况假设是在一个1GHz的处理器上运行,每个时钟频率能执行1次选取
    那么得花17310.309456440的秒
    折合起来大约是4.8个小时如果程序运行时间少于4个小时的,那几乎可以肯定该程序有问题(别告诉我你用超级计算机)何况不可能“每个时钟频率能执行1次选取”
    因为就算是空循环都得花若干个指令的,那就不知道是多少个时钟频率了
    何况在VB IDE中是解析运行程序,速度不知道慢多少个数量级
    这样的问题是无法用现在的家用计算机解决的(除非你能忍受漫长的处理时间)
      

  8.   

    这道题算是完满解决了,这是我对(vansoft)的改进版:
    ============================
    但为什么我怎么看那段代码都不象能解决你的问题??????上面 zyl910(910:分儿,我又来了!) 兄还没有计算显示结果甚至是保存结果的时间至于要存储的话,假定有一个很好很好的压缩算法,能用1byte的空间储存一个结果,那么总空间需要:17310309456440byte≈16904599078kB≈16508397MB≈16121GB≈15.74TB
    TB级的储存设备,不是一般人办到的吧。。
      

  9.   

    //上面 zyl910(910:分儿,我又来了!) 兄还没有计算显示结果甚至是保存结果的时间我是假设现在算法已经写好了,光空循环的时间