首页 > 解决方案 > 检查这个矩阵是否关于主对角线对称

问题描述

给定数字 n,不超过 10,以及大小为 n × n 的矩阵。检查该矩阵是否关于主对角线对称。如果对称则输出“YES”,否则输出“NO”。

这是我的代码,不幸的是它不起作用。请向我解释如何正确地做到这一点:)

public class Main { public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    int n= scanner.nextInt();
    int[][] number = new int[n][n];
    boolean ismatch = false;

    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        number[i][j] = scanner.nextInt();
      }
    }
    int unevenchecker = (n% 2);
    if (unevenchecker != 0) {
      for (int k = 0; k < number.length - 1; k++) {

        for (int l = 0; l < number.length - 1; l++) {
          if (number[k][l] == number[l][k]) {
            ismatch = true;
          }
        }
      }
      if (ismatch) {
        System.out.print("YES");
      }
    } else {
      System.out.print("NO");
    }
  }
}

标签: javamatrix

解决方案


如果您发现至少 1 个对称对,其中 2 个部分不相等,则矩阵不是对称的,因此不要检查循环内的相等性,而是检查不等式

  ismatch = true;
  for (int k = 0; k < number.length - 1; k++) {
    for (int l = 0; l < number.length - 1; l++) {
      if (number[k][l] != number[l][k]) {
        ismatch = false;
        break;
      }
    }
  }

推荐阅读