应朋友要求,写一个关于足彩的小软件,当中遇到了一个问题:
假设我就选9场比赛,现在需要一个函数,功能是把9场的比赛结果按排列组合的方式全都显示出来
如我选了9场,第一场到第八场全选的胜,数字表示为3,第九场选的是平和负,数字表示1,0
则组合了之后程序界面上显示为333333331和333333330

解决方案 »

  1.   

    Private Sub Command1_Click()
        Call fun_GetOrder("", Text1)
        
    End SubPrivate Sub fun_GetOrder(ByVal strOrder As String, ByVal intCount As Integer)
        Dim i As Integer
        Dim strTemp As String
        
        For i = 1 To 3
            Select Case i
                Case 1
                    strTemp = "3"
                Case 2
                    strTemp = "1"
                Case 3
                    strTemp = "0"
            End Select
            
            
            If intCount = 1 Then
                Debug.Print strOrder & strTemp
            Else
                Call fun_GetOrder(strOrder & strTemp, intCount - 1)
            End If
        Next i
        
    End Sub
      

  2.   

    1楼代码
    需要加控件textbox,commandbutton
    在text1中输入排列的位数,比如lz说的9位
      

  3.   

    输出全部结果的算法没难度,逢3进1后面各位全清零,下面是思路:Sub p(a As Variant, n As Long)
        Dim i As Long
        i = n
        While a(i) = 2
            i = i - 1
        Wend
        a(i) = a(i) + 1
        While i < n
            i = i + 1
            a(i) = 0
        Wend
    End SubPrivate Sub Command1_Click()
        
        Dim n As Long
        Dim i As Long
        n = 9
        ReDim a(n)
        For i = 1 To n
            a(i) = 0
        Next
        Do
            Debug.Print Trim(Join(a))
            Call p(a, n)
        Loop Until a(0) = 1
        
    End Sub