企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 对角占优矩阵 > 原文: [https://www.geeksforgeeks.org/diagonally-dominant-matrix/](https://www.geeksforgeeks.org/diagonally-dominant-matrix/) 在数学中,如果对于矩阵的每一行,一行中对角线条目的大小大于或等于,则称方阵为 [**对角线优势**](https://en.wikipedia.org/wiki/Diagonally_dominant_matrix#Applications_and_properties) 。 该行中所有其他(非对角线)条目的大小。 更准确地说,如果 ![](https://img.kancloud.cn/59/12/5912dcd23b8c1c2e471952e8a1e17fb6_266x98.png) 矩阵 **A** 对角占优势,例如,由于 | a <sub>,矩阵 ![](https://img.kancloud.cn/50/46/504669dc79671d712cec0ca13f317e5e_180x96.png) 对角占优。 ] 11</sub> | ≥| a <sub>12</sub> | + | a <sub>13</sub> | 由于| +3 | ≥| -2 | + | +1 | | a <sub>22</sub> | ≥| a <sub>21</sub> | + | a <sub>23</sub> | 由于| -3 | ≥| +1 | + | +2 | | a <sub>33</sub> | ≥| a <sub>31</sub> | + | a <sub>32</sub> | 由于| +4 | ≥| -1 | + | +2 | 给定矩阵**, **n** 行和 **n** 列的**。 任务是检查矩阵 A 是否对角占优。 **示例**: ``` Input : A = { { 3, -2, 1 }, { 1, -3, 2 }, { -1, 2, 4 } }; Output : YES Given matrix is diagonally dominant because absolute value of every diagonal element is more than sum of absolute values of corresponding row. Input : A = { { -2, 2, 1 }, { 1, 3, 2 }, { 1, -2, 0 } }; Output : NO ``` 这个想法是对行数从 i = 0 到 n-1 运行一个循环,对于每行,运行 j = 0 到 n-1 的循环,找到非对角元素的总和,即 i!= j。 并检查对角线元素是否大于或等于和。 如果任何一行为 false,则返回 false 或打印“ No”。 否则打印“是”。 ## C++ ```cpp // CPP Program to check whether given matrix // is Diagonally Dominant Matrix. #include <bits/stdc++.h> #define N 3 using namespace std; // check the given given matrix is Diagonally // Dominant Matrix or not. bool isDDM(int m[N][N], int n) {     // for each row     for (int i = 0; i < n; i++)    {                 // for each column, finding sum of each row.         int sum = 0;         for (int j = 0; j < n; j++)                          sum += abs(m[i][j]);                 // removing the diagonal element.         sum -= abs(m[i][i]);         // checking if diagonal element is less          // than sum of non-diagonal element.         if (abs(m[i][i]) < sum)              return false;      }     return true; } // Driven Program int main() {     int n = 3;     int m[N][N] = { { 3, -2, 1 },                     { 1, -3, 2 },                     { -1, 2, 4 } };     (isDDM(m, n)) ? (cout << "YES") : (cout << "NO");     return 0; } ```