在text1(0).text....text1(34)分别对应35个数字 分别是1-35,text1(0).text对应1.text1(34).text对应35,注意是对应不是赋值,程序开始的时候会对text1(0).text到text1(34).text分别进行赋值,还有在text3和text4输入两个值组成一个区间,然后要把text1(0).text....text1(34).text中的任意7个相加得到的和值看在不在text3到text4这个区间内,如果在就把任意7个text1所对以的数字显示在text5里(注意是对应的数字,不是控件组的值)。要把里面每组都找出来,可以组成多少就显示多少  中间要用&隔开。如果没有就提示没有符合要求的数据。下面是代码  可是执行没有反应 请高手指点。谢谢。Private Sub FindSumData(ByRef Data() As Double, ByRef FindData() As Long, ByVal FindLevel As Integer)
 Dim FindSame As Boolean, i As Integer, t As Integer, Sum As Long, TempStr As String
 
 FindLevel = FindLevel + 1
 ReDim Preserve FindData(FindLevel) As Long
      
      For i = 0 To 34
        For t = LBound(FindData) + 1 To UBound(FindData)
          If FindData(t) = i Then
            FindSame = True
            Exit For
          End If
        Next t
        If Not FindSame Then
            FindData(FindLevel) = i
            If FindLevel <= 6 Then
              Call FindSumData(Data, FindData, FindLevel)
            Else
                FindLevel = FindLevel - 1
                TempStr = "组合号码:"
                Sum = 0
                For t = LBound(FindData) + 1 To UBound(FindData)
                  Sum = Sum + Data(FindData(t))
                  TempStr = TempStr & FindData(t) & ","
                Next t
                If Sum >= MinData And Sum <= MaxData Then
                          Text5.Text = Text5.Text & "Sum=" & Sum & "   Between  " & MinData & " and " & MaxData & TempStr & vbCrLf
                          Text5.SelStart = Len(Text5)
                          Total = Total + 1
                End If
             End If
          End If
      Next i
End Sub谢谢

解决方案 »

  1.   

    这问题你不是问过了么,他们回答的都是不错的,不过你这个代码是用自建FindSumData函数来处理问题,那么其他人的回答就不能简单直接套用了,我只能说从1-34个数字中取7个的组合将非常非常多,很可能P4 3G的什么双核都要算不少时间(有可能以小时计)
      

  2.   

    Sorry,是(35*34*33*32*31*30*29)/(7*6*5*4*3*2*1)种
      

  3.   

    是(35*34*33*32*31*30*29)/(7*6*5*4*3*2*1)种,这没错,可是这是符合你的要求的组合,那不符合的去哪了?想要找出所有的组合,你只能遍历所有循环,代码如下:
    Dim i As Integer, j As Integer, k As Integer
    Dim l As Integer, m As Integer, n As Integer, o As IntegerFor i = 1 To 29
     For j = 2 To 30
      For k = 3 To 31
       For l = 4 To 32
        For m = 5 To 33
         For n = 6 To 34
          For o = 7 To 35
           '这里加个语句判断上面这7个数不能相等
           
           If i + j + k + l + m + n + o >= Val(text3.Text) And i + j + k + l + m + n + o <= Val(text4.Text) Then
            输出
           End If
           
          Next
         Next
        Next
       Next
      Next
     Next
    Next第一、共循环7个29相乘,上亿次了;
    第二、这种循环相套的代码慢如蜗牛,请做好准备。其实我猜你这个应该是搞彩票的,我也经常搞。