이 튜토리얼에서는 주어진 행렬이 대각선 우세한지 아닌지를 알아내는 데 도움이 되는 프로그램을 작성할 것입니다.
행렬에서 대각 요소 이외의 요소의 합이 대각 행렬보다 작은 경우 행렬을 대각 우세 행렬이라고 합니다. 예를 들어 보겠습니다.
421 352 247
위의 행렬은 대각선 우세 행렬입니다. 왜냐하면
4 > 2 + 1 5 ≥ 3 + 2 7 > 4 + 2
모든 대각선 요소는 같은 행에 있는 비대각선 요소의 합보다 크거나 같습니다.
문제를 해결하는 단계를 살펴보겠습니다.
-
행렬의 행과 열을 반복합니다.
-
비대각선 요소의 합을 구합니다.
-
대각선이 아닌 요소의 합을 대각선 요소와 비교합니다.
-
비대각선 요소의 합이 대각선 요소보다 크면 "아니오"를 인쇄합니다.
-
-
"예"라고 인쇄하십시오.
예시
코드를 봅시다.
#include <bits/stdc++.h> using namespace std; #define N 3 bool isDiagonallyDominantMatrix(int matrix[N][N], int n) { for (int i = 0; i < n; i++) { int sum = 0; for (int j = 0; j < n; j++) { if (i != j) { sum += abs(matrix[i][j]); } } if (abs(matrix[i][i]) < sum) { return false; } } return true; } int main() { // int matrix[N][N] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int matrix[N][N] = {{4, 2, 1}, {3, 5, 2}, {2, 4, 7}}; if (isDiagonallyDominantMatrix(matrix, 3)) { cout << "Yes" << endl; } else { cout << "No" << endl; } return 0; }
출력
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Yes
결론
튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.