我开始编程时我正在编码对角线差异我想出了这种方法,
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
我正在寻找我出错的时间...非常感谢帮助......谢谢!
为什么这么多工作?你需要一个非常小的代码:
for(int i = 0;i<n;i++){
count1+=a[i][i];
count2+=a[i][n-1-i];
}
只是为了开发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;
}
}
在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))
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;