🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 找出两个对角线之和之间的差 > 原文: [https://www.geeksforgeeks.org/find-difference-between-sums-of-two-diagonals/](https://www.geeksforgeeks.org/find-difference-between-sums-of-two-diagonals/) 给定 **n X n** 的矩阵。 任务是计算对角线总和之间的绝对差。 **示例**: ``` Input : mat[][] = 11 2 4 4 5 6 10 8 -12 Output : 15 Sum of primary diagonal = 11 + 5 + (-12) = 4. Sum of primary diagonal = 4 + 5 + 10 = 19. Difference = |19 - 4| = 15. Input : mat[][] = 10 2 4 5 Output : 7 ``` 计算平方矩阵的两个对角线的和。 沿着矩阵的第一个对角线,行索引=列索引,即如果 i = j,则 mat [i] [j]位于第一个对角线上。 沿着另一个对角线,行索引= n – 1 –列索引,即如果 i = n-1-j,则 mat [i] [j]位于第二对角线上。 通过使用两个循环,我们遍历整个矩阵并计算矩阵对角线上的总和。 以下是此方法的实现: ## C++ ```cpp // C++ program to find the difference // between the sum of diagonal. #include <bits/stdc++.h> #define MAX 100 using namespace std; int difference(int arr[][MAX], int n) {     // Initialize sums of diagonals     int d1 = 0, d2 = 0;     for (int i = 0; i < n; i++)     {         for (int j = 0; j < n; j++)         {             // finding sum of primary diagonal             if (i == j)                 d1 += arr[i][j];             // finding sum of secondary diagonal             if (i == n - j - 1)                 d2 += arr[i][j];         }     }     // Absolute difference of the sums     // across the diagonals     return abs(d1 - d2); } // Driven Program int main() {     int n = 3;     int arr[][MAX] =     {         {11, 2, 4},         {4 , 5, 6},         {10, 8, -12}     };     cout << difference(arr, n);     return 0; } ```