for i=0 to m //m 为原数个数! for k=i+1 to m // for j=2 to m-2 for w= 2 to j print “i"......
Option ExplicitPrivate Sub Command1_Click() Dim mCol As New Collection Dim I As Integer Dim intCount As Integer Dim mColNew As Collection For I = 1 To 5 mCol.Add I Next I intCount = 0 For I = 1 To 5 Set mColNew = fun_Combination(mCol, I) intCount = intCount + mColNew.Count Set mColNew = Nothing Next I Debug.Print intCount Set mCol = Nothing End Sub'数据的无序组合(非排列) Public Function fun_Combination(ByVal mData As Collection, ByVal mN As Long, _ Optional ByVal mSplit As String = vbTab, Optional ByVal mPos As Long = 0) As Collection Dim intI As Integer Dim intJ As Integer Dim mDataTemp As New Collection Dim mSubData As Collection
If mN = 1 Then For intI = mPos + 1 To mData.Count mDataTemp.Add mData.Item(intI) Next intI GoTo FunctionEnd End If For intI = mPos + 1 To mData.Count Set mSubData = fun_Combination(mData, mN - 1, mSplit, intI) For intJ = 1 To mSubData.Count mDataTemp.Add mData.Item(intI) & mSplit & mSubData(intJ) Next intJ Next intI FunctionEnd: Set fun_Combination = mDataTemp End Function
P
1->5可参考高中代数下册第九章9.2《排列》
P
1->5tozyl910:
C(5)0不应该算吧?
5 □
P □
1->5 □
□□□□
for k=i+1 to m //
for j=2 to m-2
for w= 2 to j
print “i"......
Dim mCol As New Collection
Dim I As Integer
Dim intCount As Integer
Dim mColNew As Collection
For I = 1 To 5
mCol.Add I
Next I
intCount = 0
For I = 1 To 5
Set mColNew = fun_Combination(mCol, I)
intCount = intCount + mColNew.Count
Set mColNew = Nothing
Next I
Debug.Print intCount
Set mCol = Nothing
End Sub'数据的无序组合(非排列)
Public Function fun_Combination(ByVal mData As Collection, ByVal mN As Long, _
Optional ByVal mSplit As String = vbTab, Optional ByVal mPos As Long = 0) As Collection
Dim intI As Integer
Dim intJ As Integer
Dim mDataTemp As New Collection
Dim mSubData As Collection
If mN = 1 Then
For intI = mPos + 1 To mData.Count
mDataTemp.Add mData.Item(intI)
Next intI
GoTo FunctionEnd
End If
For intI = mPos + 1 To mData.Count
Set mSubData = fun_Combination(mData, mN - 1, mSplit, intI)
For intJ = 1 To mSubData.Count
mDataTemp.Add mData.Item(intI) & mSplit & mSubData(intJ)
Next intJ
Next intI
FunctionEnd:
Set fun_Combination = mDataTemp
End Function