Java 矩阵对角差 bug

标签 java matrix

代码的目标是找出矩阵的 2 个对角线之和之间的差异。代码:

public static void main(String[] args) {
    Scanner scn=new Scanner(System.in);
    int N=scn.nextInt();
    int diag1=0;
    int diag2=0;
    int[][] matrix=new int[N][N];
    for(int i=0; i<N; i++){
        for(int j=0; j<N; j++){
            matrix[i][j]=scn.nextInt();
            System.out.print(" ");
        }
        System.out.println();
    }
    for(int i=0; i<N; i++){
        for(int j=0; j<N; j++){
            if(i==j)
                diag1+=matrix[i][j];
                //System.out.println(diag1);
        }
    }
    int counter1=0, counter2=N-1;
    for(int i=0; i<N; i++){
        for(int j=0; j<N; j++){
            if(i==counter1 && j==counter2){
                diag2+=matrix[i][j];
                counter1++;
                counter2--;
            }

        }
    }
    System.out.println(diag1); // used this for checking purpose
    System.out.println(diag2); // used this for checking purpose
    System.out.println(Math.abs(diag1-diag2));

我得到了确切的输出,但 HackerRank 的测试用例仍然显示代码失败。有人可以解释为什么吗? THe code challenge is mentioned here

删除所有额外的打印语句后,我得到了输出!

最佳答案

这里有一些不必要的打印语句,请将其删除

  for(int i=0; i<N; i++){
        for(int j=0; j<N; j++){
            matrix[i][j]=scn.nextInt();
            System.out.print(" ");
        }
        System.out.println();
    }

黑客等级只需不同,单个空格或单个换行也被认为是不同的答案。

此外,我建议您在一个循环中计算两个总和。

for(int i = 0, j = n - 1; i < n; ++i, j --)
 {
    sum1 += a[i][i];
    sum2 += a[i][j];
  }
System.out.println(Math.abs(sum1 - sum2));

关于Java 矩阵对角差 bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32024951/

相关文章:

Java Swing 字体选择器

java - Android/Java - 计算出日期

matlab - 在 Matlab 中将 2-D 向量转换为 4-D 向量

R - 沿矩阵对角线填充长度为 'n' 或更短的数据间隙

java - 如何从 HashMap 中的对象访问该对象的 HashMap。 ( java )

java - Java中两个List的比较以及使用JSTL在JSP中以表格格式显示两个List之间的差异

java - Jackson序列化忽略迭代器类的 '@JsonTypeInfo'和 '@JsonIgnore'?

c# - 如何在C#中乘以矩阵?

matlab - MATLAB 中的笛卡尔积

c++ - Eigen 中两个矩阵之间的成对差异