繁体   English   中英

给定一个方阵,计算其对角线之和的绝对差

[英]Given a square matrix, calculate the absolute difference between the sums of its diagonals

import numpy as np n=int(input())

R = n C = n p,s=0,0

print("Enter the entries in a single line (separated by space): ")

entries = list(map(int, input().split())) matrix = np.array(entries).reshape(R, C) print(matrix) for i in range(R): for j in range(C): if i==j: p=p+matrix[i][j] if i+j==n-1: s=s+matrix[i][j] s1=p-s print(s1)
r_sum=0
l_sum=0
for i in range(len(arr)):
    l_sum=l_sum+arr[i][i]
    r_sum=r_sum+arr[i][(len(arr)-1)-i]
return abs(l_sum - r_sum)

#pyhton3 使用数组概念

也许这有帮助:

c = np.array([[1,2,3],[4,5,6],[7,8,9]])
i,j = np.indices(c.shape)
sum1 = c[i==j].sum()
sum2 = c[i+j == len(c)-1].sum()
print(abs(sum1-sum2))
function absoluteDifference(arr){
    
    var sumDiagnoalOne=0
    var sumDiagnoalTwo=0
    for(var i=0; i<arr.length; i++){
    
        for(var j=i; j<arr.length; j++){
            sumDiagnoalOne+=arr[i][j]
            break
        }
    }
    var checkArray=[]
    arr.map(array=>checkArray.push(array.reverse()))
    for(var i=0; i<checkArray.length; i++){
    
        for(var j=i; j<checkArray.length; j++){
            sumDiagnoalTwo+=checkArray[i][j]
            break
        }
    }
    return Math.abs(sumDiagnoalOne- sumDiagnoalTwo)
}
#!/bin/ruby

n = gets.strip.to_i
a = Array.new(n)
(0..n-1).each do |i|
    a[i] = gets.strip.split(' ').map(&:to_i)
end

d1 = 0
d2 = 0
(0..n-1).each do |i|
    d1 = d1 + a[i][i]
    d2 = d2 + a[-i-1][i]
end

print (d1-d2).abs

#包括

使用命名空间标准;

int main() {
int n;
cin >> n;

int arr[n][n];

    long long int d1=0; //First Diagonal
    long long int d2=0; //Second Diagonal

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> arr[i][j];
            if (i == j) d1 += arr[i][j];
            if (i == n - j - 1) d2 += arr[i][j];
        }
    }

    cout << abs(d1 - d2) << endl; //Absolute difference of the sums across the 
diagonals
    return 0;
}

不是 Python 解决方案,而是任何对 TypeScript/JavaScript 解决方案感兴趣的人参考: https ://www.geeksforgeeks.org/find-difference-between-sums-of-two-diagonals/

function diagonalDifference(arr: number[][]): number {
    let ltr = 0;
    let rtl = 0;
    for(let i=0;i<arr.length;i++){
        for(let j=0;j<arr.length;j++){
            if(i==j){
                ltr += arr[i][j]
            }
            
            if(i == arr.length-j-1){
                rtl += arr[i][j]
            }
        }
    }
    let result = Math.abs(ltr - rtl);
    return result;
}

Javascript 在 O(n)

function diagonalDifference(arr) {
    const size = arr.length;
    let lsum = 0;
    let rsum = 0;
    
    for(let i = 0; i < size; i ++){
        lsum += arr[i][i];
        
        rsum += arr[i][Math.abs(size - 1 - i)];          
    }
    return Math.abs(lsum - rsum);
}

 //sample array matrix 4x4 const arr=[ [ 11, 2, 4,5], [ 4, 5, 6,4 ], [ 10, 8, -12,6 ],[ 10, 8, -12,6 ] ]; function findMedian(arr) { const matrixType=arr.length const flat=arr.flat() let sumDiag1=0 let sumDiag2=0 for(let i=0;i<matrixType;i++) { sumDiag1+=flat[i*(matrixType+1)] sumDiag2+=flat[(i+1)*(matrixType-1)] } const diff=Math.abs(sumDiag1-sumDiag2) return diff } console.log(findMedian(arr))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM