當前位置:成語大全網 - 新華字典 - VB 編程問題(排列組合)

VB 編程問題(排列組合)

窗體上添加Text1,Text2,Command1,設置Text2的MultiLine屬性為 True

其中text1用於確定長度,text2用於輸出,點Command開始計算

Dim A() As Byte

Private Sub Command1_Click()

If Not IsNumeric(Text1.Text) Then Exit Sub

If Text1.Text <= 1 Then Exit Sub

Text2.Text = ""

Dim Rows As Long, I As Integer, J As Integer

For I = 0 To Text1.Text

Rows = Rows + C(Text1.Text, I)

Next

ReDim A(1 To Rows, 1 To Text1.Text)

J = 1

For I = 0 To Text1.Text

J = FillA(J, I, 1, Text1.Text)

Next

For I = 1 To Rows

Text2.Text = Text2.Text & I & " "

For J = 1 To Text1.Text

Text2.Text = Text2.Text & A(I, J)

Next

Text2.Text = Text2.Text & Chr(13) & Chr(10)

Next

End Sub

Function FillA(StartRow As Integer, FillNum As Integer, Index As Integer, MaxNum As Integer) As Integer

'開始填充的行數,要填充的個數,開始填充的列數,最大列數

Dim I As Integer, J As Integer

If FillNum = 0 Then FillA = StartRow + 1: Exit Function

If Index + FillNum - 1 > MaxNum Then FillA = StartRow: Exit Function

If FillNum > 1 Then

For I = StartRow To StartRow + C(MaxNum - Index, FillNum - 1) - 1

A(I, Index) = 1

Next

J = FillA(StartRow, FillNum - 1, Index + 1, MaxNum)

FillA = FillA(J, FillNum, Index + 1, MaxNum)

Exit Function

End If

For I = Index To MaxNum

A(StartRow + I - Index, I) = 1

Next

FillA = StartRow + MaxNum - Index + 1

End Function

Function C(Num1 As Integer, Num2 As Integer) As Integer

If Num1 <= 1 Or Num2 <= 0 Or Num2 >= Num1 Then C = 1: Exit Function

Dim I As Integer, R As Long

R = 1

For I = 1 To Num2

R = R * (Num1 - I + 1)

Next

For I = 1 To Num2

R = R / I

Next

C = R

End Function

Private Sub Form_Load()

'設置Text2的MultiLine屬性為 True

Text2.Enabled = False

Text1.Text = 8

Text2.Text = ""

Command1.Caption = "計算"

End Sub