我试图找出矩阵 [][] 在不同方向(水平/垂直或两者)上是否对称,并找到了本教程 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;
}
添加回答
举报
0/150
提交
取消