Ở đây chúng ta sẽ thấy một chương trình giúp kiểm tra xem ma trận có đối xứng hay không. Ma trận đối xứng là một ma trận vuông đối xứng về cả hai đường chéo chính. Ma trận dưới đây là một ví dụ về ma trận đối xứng.
1 2 3 4 5 2 6 7 8 4 3 7 9 7 3 4 8 7 6 2 5 4 3 2 1
Thuật toán
checkBiSymmetric (mat, n)
Begin for i in range 0 to n – 1, do for j in range 0 to i – 1, do if mat[i, j] is not same as mat[j, i], then return false end if done done for i in range 0 to n – 1, do for j in range 0 to n – i, do if mat[i, j] is not same as mat[n – j - 1, n – i - 1], then return false end if done done return true End
Ví dụ
#include<iostream> #define N 5 using namespace std; int matrix[N][N] = {{1, 2, 3, 4, 5}, {2, 6, 7, 8, 4}, {3, 7, 9, 7, 3}, {4, 8, 7, 6, 2}, {5, 4, 3, 2, 1}}; bool checkBiSymmetric() { for (int i = 0; i < N; i++) //scan through forward diagonal for (int j = 0; j < i; j++) if (matrix[i][j] != matrix[j][i]) //when corresponding elements are not same, return false return false; for (int i = 0; i < N; i++) //scan through forward diagonal for (int j = 0; j < N - i; j++) if (matrix[i][j] != matrix[N - j - 1][N - i - 1]) //when corresponding elements are not same, return false return false; return true; //otherwise return true } main() { if(checkBiSymmetric()){ cout << "Yes the matrix is bisymmetric"; } else { cout << "No the matrix is not bisymmetric"; } }
Đầu ra
Yes the matrix is bisymmetric