对角线差异

问题描述 投票:2回答:4

我开始编程时我正在编码对角线差异我想出了这种方法,

 public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    int j = 0;
    int a[][] = new int[n][n];
    int count1 = 0; int count2 = 0;
    int result = 0;
    for(int a_i=0; a_i < n; a_i++){
        for(int a_j = 0;a_j < n;a_j++){

            a[a_i][j] = in.nextInt();

    }}
    for(int i = 0;i<n;i++)
    {
        count1+=a[i][j];
        System.out.println(count1);
        j++;
    }
    j = 0;
    for(int i = n-1;i>=0;i--)
    {
        count2+=a[i][j];
        System.out.println(count2);
        j++;
    }
    result = Math.abs(count1 - count2);
    System.out.println(result);
}

输入 3 11 2 4 4 5 6 10 8 -12 预期产出15 我的输出16

我正在寻找我出错的时间...非常感谢帮助......谢谢!

java arrays for-loop
4个回答
2
投票

为什么这么多工作?你需要一个非常小的代码:

for(int i = 0;i<n;i++){
    count1+=a[i][i];
    count2+=a[i][n-1-i];
}

0
投票

只是为了开发Frank的答案,你实际上并不需要数组:

for(int i=0; i < n; i++){
  for(int j = 0; j < n; j++){
    int v = in.nextInt();
    count1 += (i == j) ? v : 0;
    count2 += (i + j == n-1) ? v : 0;
  }
}

0
投票

在java中解决方案是

    int result = 0;
    for(int i = 0;i<n;i++){
        l+=a[i][i];
        r+=a[i][n-1-i];
    }
    result = abs(l-r);

对于那些看起来如何在python中做同样的人,这里是如何:

def diagonalDifference(a):
    l = sum(a[i][i] for i in range(len(a)))
    r = sum(a[i][len(a)-1-i] for i in range(len(a)))
    return (abs(r- l))

-1
投票
int k=0;
int l=0;
int m;
int z=arr.length;
int s=arr.length-1;
for(int i=0;i<z;i++) {
    for(int j=0;j<z;j++) {
        if(i==j){
            k=k+arr[i][j];
        }
    }
    l=l+arr[i][s];   
    s--;
}
if(l>k) {
    m=l-k;
} else {
    m=k-l;
}
return m;
© www.soinside.com 2019 - 2024. All rights reserved.