如何利用vb编程判断二维数组是否对称

如题所述

您可以遍历来判断是否对称

语法为vb.net

    Sub checkSym(ByVal a As Array)
        Dim i As Integer = ubound(a, 1)
        Dim j As Integer = ubound(a, 2)
        If i <> j Then GoTo NotSym

        Dim n As Integer = 0
        Dim k As Integer = 0

        While n <= i
            k = 0
            While k <= i
                If a.getValue(n, k) <> a.getValue(i - n, i - k) Then GoTo NotSym
                k = k + 1
            End While
            n = n + 1
        End While
        Msgbox("对称")
        Exit Sub
NotSym:
        Msgbox("不对称")
    End Sub

如果您的矩阵过大不可遍历的时候可以考虑随机数算法。

Sub checkSym(ByVal a As Array)
        Dim i As Integer = ubound(a, 1)
        Dim j As Integer = ubound(a, 2)
        If i <> j Then GoTo NotSym

        Dim n As Integer = 0
        Dim k As Integer = 0
        j = 0

        While j <= 1000 '这里1000表示检验次数,次数越多准确性越高然而耗时越长
            k = Math.Round(VBMath.Rnd * i, 0)
            n  =  Math.Round(VBMath.Rnd * i, 0)
            If a.getValue(n, k) <> a.getValue(i - n, i - k) Then GoTo NotSym
            j = j + 1
        End While
        Msgbox("可能对称")
        Exit Sub
NotSym:
        Msgbox("不对称")
    End Sub

希望有所帮助

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-22
怎么个"对称"法?
相似回答