VB语言高手实现动态数组矩阵
第一问:为简化问题将M选N组合硬性规定为8选6组合从1,2,3,4,5,6,7,8这8个数字中任取6个组合输出(每组有不同的6个数字组成),共有28行第二问:相当于旋转矩...
第一问:为简化问题将M选N组合硬性规定为8选6组合
从1,2,3,4,5,6,7,8这8个数字中任取6个组合输出(每组有不同的6个数字组成),共有28行
第二问:相当于旋转矩阵中6保5
把一问得到数据满足条件每行中有5个相同数字就过滤,只保留一行
例如结果
1-2-3-4-5-6
1-2-3-4-5-7
1-2-3-4-5-8
只需保留任意一行
1-2-3-4-5-6
如此类推最后结果只有几行
谁能做出来加分200 展开
从1,2,3,4,5,6,7,8这8个数字中任取6个组合输出(每组有不同的6个数字组成),共有28行
第二问:相当于旋转矩阵中6保5
把一问得到数据满足条件每行中有5个相同数字就过滤,只保留一行
例如结果
1-2-3-4-5-6
1-2-3-4-5-7
1-2-3-4-5-8
只需保留任意一行
1-2-3-4-5-6
如此类推最后结果只有几行
谁能做出来加分200 展开
1个回答
展开全部
Option Explicit
Function chkarr(a(), t As String) As Boolean
Dim i As Integer, j As Integer, k As Integer
Dim s() As String
For i = LBound(a) To UBound(a) - 1
For j = i + 1 To UBound(a)
If a(i) = 0 Or a(j) = 0 衡闷大Or a(i) >= a(j) Then Exit Function
Next
Next
If t <> "" Then
s = Split(t, vbCrLf)
For i = 0 To UBound(s)
k = 0
For j = LBound(a) To UBound(a)
If InStr("-" & s(i) & "-"罩乱, "-" & a(j) & "-") Then
k = k + 1
If k > 4 Then Exit Function
End If
Next
Next
End If
chkarr = True
End 咐竖Function
Private Sub Command1_Click()
Dim m As Integer, n As Integer, i As Integer
Dim k(), t As String
m = 8 '修改m和n的值就可实现任意m选n组合
n = 6
ReDim k(1 To n)
Do
For i = n To 1 Step -1
k(i) = k(i) + 1
If k(i) > m Then
If i > 1 Then k(i) = k(i - 1) + 1
Else
Exit For
End If
Next
If i > 0 Then
If chkarr(k, t) Then
If t <> "" Then t = t & vbCrLf
t = t & Join(k, "-")
End If
Else
Exit Do
End If
Loop
MsgBox t
End Sub
追问
谢谢高手加足200,如何给出提示语输入m和n实现任意组合
追答
m = 8
n = 6
可改为
m = Val(InputBox("请输入M值", 8))
n = Val(InputBox("请输入N值", 6))
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询