代码的目标是找出矩阵的 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/