那位大虾能给想个好的算法,在20个数中任选出五个,五个数中不能重复,且不考虑顺序,即1 2 3 4 5 和5 4 3 2 1视为一种情况。
                       
    选数的方法当然很好,单还要将全部情况一次打印出来呀

解决方案 »

  1.   

    很容易呀,看看下面的
     for i=1 to 20 
      for j=i to 20
       for k=j to 20
        for m=k to 20
         for n=m to 20 
           print i,j,k,m,n
         next
        next
       next
      next
     next这样就可以了呀
      

  2.   

    哦,错了一点,要写 j=i+1 to 20 等等,都要加1才行。
      

  3.   

    哦,我搞错了。
    怎么又是一道,早说就行了呀
    再看一次。先将20个数排序,然后来段程序就行了,看下面的。
     for i= 1 to 20 
      for j= i+1 to 20
       for k= j+1 to 20
        for m= k+1 to 20
         for n= m+1 to 20
          print a[i],a[j],a[k],a[m],a[n]
         next
        next
       next
      next
     next就可以了呀。要把中间相同的数设一个记号就行了。也就是说要注意 a[i]=a[i+1]的情况。自己想办法吧。有问题就留一个email
      

  4.   

    Dim strStringPath As String
       Dim strString(0 To 20) As String
       Dim strStr1(0 To 400) As String
       Dim strStr2(0 To 8000) As String
       Dim strStr3(0 To 160000) As String
       Dim strStr4(0 To 3200000) As String
       Dim intpos   As Integer
       Dim intit    As Integer
       Dim lngTmp   As Long
       Dim i       As Long
       Dim str1() As String
       Dim lngSize As Long
       
       Dim h      As Integer
       Dim k      As Integer
       Dim y      As Integer
       Dim l      As Integer
       Dim j      As Long
       
       For lngTmp = 1 To 20
            strString(lngTmp - 1) = CStr(lngTmp) & "-"
       Next lngTmp
       
        j = 1
       For i = 1 To 20
            For lngTmp = 1 To 20
                   str1 = Split(strString(i - 1), "-")
                   If CInt(str1(0)) <> lngTmp Then
                        strStr1(j - 1) = strString(i - 1) & CStr(lngTmp) & "-"
                        j = j + 1
                   End If
            Next lngTmp
       Next i
          
       lngSize = j
       j = 1
       For i = 1 To lngSize - 1
            For lngTmp = 1 To 20
                   str1 = Split(strStr1(i - 1), "-")
                   If CInt(str1(0)) <> lngTmp Then
                         If CInt(str1(1)) <> lngTmp Then
                               strStr2(j - 1) = strStr1(i - 1) & CStr(lngTmp) & "-"
                               j = j + 1
                         End If
                   End If
            Next lngTmp
       Next i
       
       lngSize = j
       j = 1
       For i = 1 To lngSize - 1
            For lngTmp = 1 To 20
                   str1 = Split(strStr2(i - 1), "-")
                   If CInt(str1(0)) <> lngTmp Then
                      If CInt(str1(1)) <> lngTmp Then
                         If CInt(str1(2)) <> lngTmp Then
                            strStr3(j - 1) = strStr2(i - 1) & CStr(lngTmp) & "-"
                            j = j + 1
                          End If
                      End If
                   End If
            Next lngTmp
       Next i
       lngSize = j
       j = 1
       For i = 1 To lngSize - 1
            For lngTmp = 1 To 20
                   str1 = Split(strStr3(i - 1), "-")
                   If CInt(str1(0)) <> lngTmp Then
                         If CInt(str1(1)) <> lngTmp Then
                             If CInt(str1(2)) <> lngTmp Then
                                 If CInt(str1(3)) <> lngTmp Then
                                    strStr4(j - 1) = strStr3(i - 1) & CStr(lngTmp) & "-"
                                    j = j + 1
                                 End If
                              End If
                         End If
                   End If
            Next lngTmp
       Next i
          
      i = 0
      
      要的答案就在数组strStr4中
      

  5.   

    NotReady(No) ,不错,就是有点慢:(