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书生
科技发烧友

2015-03-30 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
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))
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式