C++程式計算矩陣對角線之和


二維陣列或矩陣在許多應用中都非常有用。矩陣的行和列用於儲存數字。我們也可以使用多維陣列在C++中定義二維矩陣。在本文中,我們將學習如何使用C++計算給定方陣的對角線之和。

矩陣有兩個對角線,主對角線和次對角線(有時也稱為主對角線和副對角線)。主對角線從左上角(索引[0, 0])到右下角(索引[n-1, n-1]),其中n是方陣的階數。次對角線從右上角(索引[n-1, 0])到左下角(索引[0, n-1])。讓我們看看計算這兩個對角線元素之和的演算法。

矩陣對角線之和

$$\begin{bmatrix} 8 & 5& 3\newline 6 & 7& 1\newline 2 & 4& 9\ \end{bmatrix},$$

Sum of all elements in major diagonal: (8 + 7 + 9) = 24
Sum of all elements in minor diagonal: (3 + 7 + 2) = 12

在前面的例子中,使用了一個3 x 3的矩陣。我們分別掃描了對角線並計算了它們的和。讓我們看看演算法和實現以更清楚地瞭解。

演算法

  • 讀取矩陣M作為輸入
  • 假設M有n行n列
  • sum_major := 0
  • sum_minor := 0
  • 對於i從0到n-1,執行
    • 對於j從0到n-1,執行
      • 如果i和j相同,則
        • sum_major := sum_major + M[i][j]
      • 結束if
      • 如果(i + j)等於(N - 1),則
        • sum_minor := sum_minor + M[i][j]
      • 結束if
    • 結束for
  • 結束for
  • 返回sum

示例

#include <iostream>
#include <cmath>
#define N 7
using namespace std;
float solve( int M[ N ][ N ] ){
   int sum_major = 0;
   int sum_minor = 0;
   for ( int i = 0; i < N; i++ ) {
      for ( int j = 0; j < N; j++ ) {
         if( i == j ) {
            sum_major = sum_major + M[ i ][ j ];
         }
         if( (i + j) == N - 1) {
            sum_minor = sum_minor + M[ i ][ j ];
         }
      }
   }
   cout << "The sum of major diagonal: " << sum_major << endl;
   cout << "The sum of minor diagonal: " << sum_minor << endl;
}
int main(){
   int mat1[ N ][ N ] = {
      {5, 8, 74, 21, 69, 78, 25},
      {48, 2, 98, 6, 63, 52, 3},
      {85, 12, 10, 6, 9, 47, 21},
      {6, 12, 18, 32, 5, 10, 32},
      {8, 45, 74, 69, 1, 14, 56},
      {7, 69, 17, 25, 89, 23, 47},
      {98, 23, 15, 20, 63, 21, 56},
   };
   cout << "For the first matrix: " << endl;
   solve( mat1 );
   int mat2[ N ][ N ] = {
      {6, 8, 35, 21, 87, 8, 26},
      {99, 2, 36, 326, 25, 24, 56},
      {15, 215, 3, 157, 8, 41, 23},
      {96, 115, 17, 5, 3, 10, 18},
      {56, 4, 78, 5, 10, 22, 58},
      {85, 41, 29, 65, 47, 36, 78},
      {12, 23, 87, 45, 69, 96, 12}
   };
   cout << "\nFor the second matrix: " << endl;
   solve( mat2 );
}

輸出

For the first matrix: 
The sum of major diagonal: 129
The sum of minor diagonal: 359

For the second matrix: 
The sum of major diagonal: 74
The sum of minor diagonal: 194

結論

在本文中,我們學習瞭如何計算給定方陣的對角線之和。主對角線從左上角到右下角,次對角線從右上角到左下角。為了找到這些對角線元素的和,我們迴圈遍歷所有元素。當行索引和列索引值相同時,表示主對角線元素;當兩個索引的和等於n-1(其中n是矩陣的階數)時,它將新增到次對角線。此過程需要兩個巢狀迴圈,我們遍歷二維陣列中的所有元素。因此,計算給定矩陣的兩個對角線之和需要O(n2)的時間。

更新於:2022年12月14日

6K+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.