<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 有效地計算矩陣的對角線總和 > 原文: [https://www.geeksforgeeks.org/efficiently-compute-sums-of-diagonals-of-a-matrix/](https://www.geeksforgeeks.org/efficiently-compute-sums-of-diagonals-of-a-matrix/) 給定一個 2D 正方形矩陣,請找到主對角線和輔助對角線中的元素之和。 例如,考慮以下 4 X 4 輸入矩陣。 ``` A00 A01 A02 A03 A10 A11 A12 A13 A20 A21 A22 A23 A30 A31 A32 A33 ``` 主對角線由元素 A00,A11,A22,A33 形成。 1. 主對角線的條件:行-列條件為 row = column。 次對角線由元素 A03,A12,A21,A30 形成。 2. 次對角線的條件:行-列條件為 row = numberOfRows –列-1。 **示例**: ``` Input : 4 1 2 3 4 4 3 2 1 7 8 9 6 6 5 4 3 Output : Principal Diagonal: 16 Secondary Diagonal: 20 Input : 3 1 1 1 1 1 1 1 1 1 Output : Principal Diagonal: 3 Secondary Diagonal: 3 ``` **方法 1(O(n ^ 2)**: 在此方法中,我們使用兩個循環,即列循環和行循環,在內部循環中我們檢查上述條件: ## C++ ```cpp // A simple C++ program to find sum of diagonals #include <bits/stdc++.h> using namespace std; const int MAX = 100; void printDiagonalSums(int mat[][MAX], int n) { ????int principal = 0, secondary = 0; ????for (int i = 0; i < n; i++) { ????????for (int j = 0; j < n; j++) { ????????????// Condition for principal diagonal ????????????if (i == j) ????????????????principal += mat[i][j]; ????????????// Condition for secondary diagonal ????????????if ((i + j) == (n - 1)) ????????????????secondary += mat[i][j]; ????????} ????} ????cout << "Principal Diagonal:" << principal << endl; ????cout << "Secondary Diagonal:" << secondary << endl; } // Driver code int main() { ????int a[][MAX] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 },? ????????????????????{ 1, 2, 3, 4 }, { 5, 6, 7, 8 } }; ????printDiagonalSums(a, 4); ????return 0; } ``` ## Java ```java // A simple java program to find // sum of diagonals import java.io.*; public class GFG { ????static void printDiagonalSums(int [][]mat, ?????????????????????????????????????????int n) ????{ ????????int principal = 0, secondary = 0; ????????for (int i = 0; i < n; i++) { ????????????for (int j = 0; j < n; j++) { ????????????????// Condition for principal ????????????????// diagonal ????????????????if (i == j) ????????????????????principal += mat[i][j]; ????????????????// Condition for secondary ????????????????// diagonal ????????????????if ((i + j) == (n - 1)) ????????????????????secondary += mat[i][j]; ????????????} ????????} ????????System.out.println("Principal Diagonal:" ????????????????????????????????????+ principal); ????????System.out.println("Secondary Diagonal:" ????????????????????????????????????+ secondary); ????} ????// Driver code ????static public void main (String[] args) ????{ ????????int [][]a = { { 1, 2, 3, 4 }, ??????????????????????{ 5, 6, 7, 8 },? ??????????????????????{ 1, 2, 3, 4 }, ??????????????????????{ 5, 6, 7, 8 } }; ????????printDiagonalSums(a, 4); ????} } // This code is contributed by vt_m. ``` ## Python3 ```py # A simple Python program to? # find sum of diagonals MAX = 100 def printDiagonalSums(mat, n): ????principal = 0 ????secondary = 0; ????for i in range(0, n):? ????????for j in range(0, n):? ????????????# Condition for principal diagonal ????????????if (i == j): ????????????????principal += mat[i][j] ????????????# Condition for secondary diagonal ????????????if ((i + j) == (n - 1)): ????????????????secondary += mat[i][j] ????print("Principal Diagonal:", principal) ????print("Secondary Diagonal:", secondary) # Driver code a = [[ 1, 2, 3, 4 ], ?????[ 5, 6, 7, 8 ],? ?????[ 1, 2, 3, 4 ], ??????[ 5, 6, 7, 8 ]] printDiagonalSums(a, 4) # This code is contributed? # by ihritik ``` ## C# ```cs // A simple C# program to find sum // of diagonals using System; public class GFG { ????static void printDiagonalSums(int [,]mat, ????????????????????????????????????????int n) ????{ ????????int principal = 0, secondary = 0; ????????for (int i = 0; i < n; i++) { ????????????for (int j = 0; j < n; j++) { ????????????????// Condition for principal ????????????????// diagonal ????????????????if (i == j) ????????????????????principal += mat[i,j]; ????????????????// Condition for secondary ????????????????// diagonal ????????????????if ((i + j) == (n - 1)) ????????????????????secondary += mat[i,j]; ????????????} ????????} ????????Console.WriteLine("Principal Diagonal:" ??????????????????????????????????+ principal); ????????Console.WriteLine("Secondary Diagonal:" ??????????????????????????????????+ secondary); ????} ????// Driver code ????static public void Main () ????{ ????????int [,]a = { { 1, 2, 3, 4 }, ?????????????????????{ 5, 6, 7, 8 },? ?????????????????????{ 1, 2, 3, 4 }, ?????????????????????{ 5, 6, 7, 8 } }; ????????printDiagonalSums(a, 4); ????} } // This code is contributed by vt_m. ``` ## PHP ```php <?php // A simple PHP program to // find sum of diagonals $MAX = 100; function printDiagonalSums($mat, $n) { ????global $MAX; ????$principal = 0; ????$secondary = 0; ????for ($i = 0; $i < $n; $i++)? ????{ ????????for ($j = 0; $j < $n; $j++)? ????????{ ????????????// Condition for? ????????????// principal diagonal ????????????if ($i == $j) ????????????????$principal += $mat[$i][$j]; ????????????// Condition for ????????????// secondary diagonal ????????????if (($i + $j) == ($n - 1)) ????????????????$secondary += $mat[$i][$j]; ????????} ????} ????echo "Principal Diagonal:" ,? ???????????????$principal ,"\n"; ????echo "Secondary Diagonal:",? ??????????????$secondary ,"\n"; } // Driver code $a = array (array ( 1, 2, 3, 4 ),? ????????????array ( 5, 6, 7, 8 ),? ????????????array ( 1, 2, 3, 4 ),? ????????????array ( 5, 6, 7, 8 )); printDiagonalSums($a, 4); // This code is contrbuted by ajit ?> ``` **輸出**: ``` Principal Diagonal:18 Secondary Diagonal:18 ``` 此代碼需要 O(n ^ 2)時間和`O(1)`輔助空間 方法 2(`O(n)`: 在此方法中,我們使用一個循環,即用于計算主對角線和輔助對角線之和的循環: ## C++ ``` // An efficient C++ program to find sum of diagonals #include <bits/stdc++.h> using namespace std; const int MAX = 100; void printDiagonalSums(int mat[][MAX], int n) { ????int principal = 0, secondary = 0;? ????for (int i = 0; i < n; i++) { ????????principal += mat[i][i]; ????????secondary += mat[i][n - i - 1];???????? ????} ????cout << "Principal Diagonal:" << principal << endl; ????cout << "Secondary Diagonal:" << secondary << endl; } // Driver code int main() { ????int a[][MAX] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 },? ?????????????????????{ 1, 2, 3, 4 }, { 5, 6, 7, 8 } }; ????printDiagonalSums(a, 4); ????return 0; } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看