确定矩阵 [ ] [ ] 的对称性

我试图找出矩阵 [][] 在不同方向(水平/垂直或两者)上是否对称,并找到了本教程 https://www.geeksforgeeks.org/check-horizontal-vertical-symmetry-binary- matrix/ 并用我的矩阵尝试过,但它似乎无法正常工作。这是我当前的代码和我得到的输出:


示例矩阵:


111

144

144

我通过以下方式调用教程中的方法:


 // test for symmetrie 

    checkHV(matrix, rows, colums);

在这种情况下,行和列都是 3。在我看来,它应该输出 NO,但当前输出是 VERTICAL(总是,所有矩阵......)。这是为什么?我怎样才能修改代码以使其对我正常工作?谢谢!


这里是教程中的代码:


 static void checkHV(int [][]arr, int N,

                int M)

{


// Initializing as both horizontal 

// and vertical symmetric.

boolean horizontal = true;

boolean vertical = true;


// Checking for Horizontal Symmetry. 

// We compare first row with last

// row, second row with second

// last row and so on.

for (int i = 0, k = N - 1; 

         i < N / 2; i++, k--)

{


    // Checking each cell of a column.

    for (int j = 0; j < M; j++)

    {


        // check if every cell is identical

        if (arr[i][j] != arr[k][j])

        {

            horizontal = false;

            break;

        }

    }

}


// Checking for Vertical Symmetry. We compare

// first column with last column, second xolumn

// with second last column and so on.

for (int i = 0, k = M - 1;

         i < M / 2; i++, k--)

{


    // Checking each cell of a row.

    for (int j = 0; j < N; j++)

    {

        // check if every cell is identical

        if (arr[i][j] != arr[k][j])

        {

            horizontal = false;

            break;

        }

    }

}


if (!horizontal && !vertical)

    System.out.println("NO");


else if (horizontal && !vertical)

    System.out.println("HORIZONTAL");


else if (vertical && !horizontal)

    System.out.println("VERTICAL");


else

    System.out.println("BOTH");

}


30秒到达战场
浏览 124回答 2
2回答

蝴蝶刀刀

public static boolean isSymmetricHorizontally(int[][] matrix) {&nbsp; &nbsp; for(int rowL = 0, rowH = matrix.length - 1; rowL < rowH; rowL++, rowH--)&nbsp; &nbsp; &nbsp; &nbsp; for(int col = 0; col < matrix[0].length; col++)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(matrix[rowL][col] != matrix[rowH][col])&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; return true;}public static boolean isSymmetricVertically(int[][] matrix) {&nbsp; &nbsp; for(int colL = 0, colH = matrix[0].length - 1; colL < colH; colL++, colH--)&nbsp; &nbsp; &nbsp; &nbsp; for(int row = 0; row < matrix[0].length; row++)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(matrix[row][colL] != matrix[row][colL])&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; return true;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java