为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

30秒到达战场 2021-06-13 15:17:32
我试图找出矩阵 [][] 在不同方向(水平/垂直或两者)上是否对称,并找到了本教程 https://www.geeksforgeeks.org/check-horizontal-vertical-symmetry-binary- matrix/ 并用我的矩阵尝试过,但它似乎无法正常工作。这是我当前的代码和我得到的输出:示例矩阵:111144144我通过以下方式调用教程中的方法: // 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");}
查看完整描述

2 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

public static boolean isSymmetricHorizontally(int[][] matrix) {

    for(int rowL = 0, rowH = matrix.length - 1; rowL < rowH; rowL++, rowH--)

        for(int col = 0; col < matrix[0].length; col++)

            if(matrix[rowL][col] != matrix[rowH][col])

                return false;

    

    return true;

}


public static boolean isSymmetricVertically(int[][] matrix) {

    for(int colL = 0, colH = matrix[0].length - 1; colL < colH; colL++, colH--)

        for(int row = 0; row < matrix[0].length; row++)

            if(matrix[row][colL] != matrix[row][colL])

                return false;

    

    return true;

}


查看完整回答
反对 回复 2021-06-30
  • 2 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信