Program to check if a matrix is symmetric

30 Apr, 2021
A square matrix is said to be symmetric matrix if the transpose of the matrix is same as the given matrix. Symmetric matrix can be obtain by changing row to column and column to row.
Examples: 
Input : 1 2 3
        2 1 4
        3 4 3
Output : Yes

Input : 3 5 8
        3 4 7
        8 5 3
Output : No
A Simple solution is to do following. 
1) Create transpose of given matrix. 2) Check if transpose and given matrices are same or not,  
C++
Java
Python
C#
PHP
Javascript
// Simple c++ code for check a matrix is// symmetric or not.#include <iostream>using namespace std; const int MAX = 100; // Fills transpose of mat[N][N] in tr[N][N]void transpose(int mat[][MAX], int tr[][MAX], int N){    for (int i = 0; i < N; i++)        for (int j = 0; j < N; j++)            tr[i][j] = mat[j][i];} // Returns true if mat[N][N] is symmetric, else falsebool isSymmetric(int mat[][MAX], int N){    int tr[N][MAX];    transpose(mat, tr, N);    for (int i = 0; i < N; i++)        for (int j = 0; j < N; j++)            if (mat[i][j] != tr[i][j])                return false;    return true;} // Driver codeint main(){    int mat[][MAX] = { { 1, 3, 5 },                       { 3, 2, 4 },                       { 5, 4, 1 } };     if (isSymmetric(mat, 3))        cout << "Yes";    else        cout << "No";    return 0;}
// Simple java code for check a matrix is// symmetric or not. import java.io.*; class GFG {        static int  MAX = 100; // Fills transpose of mat[N][N] in tr[N][N] static void transpose(int mat[][], int tr[][], int N){    for (int i = 0; i < N; i++)        for (int j = 0; j < N; j++)            tr[i][j] = mat[j][i];} // Returns true if mat[N][N] is symmetric, else false static boolean isSymmetric(int mat[][], int N){    int tr[][] = new int[N][MAX];    transpose(mat, tr, N);    for (int i = 0; i < N; i++)        for (int j = 0; j < N; j++)            if (mat[i][j] != tr[i][j])                return false;    return true;} // Driver code    public static void main (String[] args) {                 int mat[][] = { { 1, 3, 5 },                    { 3, 2, 4 },                    { 5, 4, 1 } };     if (isSymmetric(mat, 3))        System.out.println( "Yes");    else        System.out.println ( "No");         }}
# Simple Python code for check a matrix is# symmetric or not.  # Fills transpose of mat[N][N] in tr[N][N]def transpose(mat, tr, N):    for i in range(N):        for j in range(N):            tr[i][j] = mat[j][i]  # Returns true if mat[N][N] is symmetric, else falsedef isSymmetric(mat, N):         tr = [ [0 for j in range(len(mat[0])) ] for i in range(len(mat)) ]    transpose(mat, tr, N)    for i in range(N):        for j in range(N):            if (mat[i][j] != tr[i][j]):                return False    return True  # Driver codemat = [ [ 1, 3, 5 ], [ 3, 2, 4 ], [ 5, 4, 1 ] ]if (isSymmetric(mat, 3)):    print "Yes"else:    print "No" # This code is contributed by Sachin Bisht
// Simple C# code for check a matrix is// symmetric or not. using System; class GFG {         static int MAX = 100;         // Fills transpose of mat[N][N] in tr[N][N]    static void transpose(int [,]mat, int [,]tr, int N)    {        for (int i = 0; i < N; i++)            for (int j = 0; j < N; j++)                tr[i,j] = mat[j,i];    }         // Returns true if mat[N][N] is symmetric, else false    static bool isSymmetric(int [,]mat, int N)    {        int [,]tr = new int[N,MAX];        transpose(mat, tr, N);        for (int i = 0; i < N; i++)            for (int j = 0; j < N; j++)                if (mat[i,j] != tr[i,j])                    return false;        return true;    }         // Driver code    public static void Main ()    {                     int [,]mat = { { 1, 3, 5 },                        { 3, 2, 4 },                        { 5, 4, 1 } };             if (isSymmetric(mat, 3))            Console.WriteLine( "Yes");        else            Console.WriteLine( "No");               }} // This code is contributed by vt_m.
<?php// Simple PHP code for check a matrix is// symmetric or not. // Returns true if mat[N][N] is// symmetric, else falsefunction isSymmetric($mat, $N){    $tr = array(array());    for ($i = 0; $i < $N; $i++)        for ($j = 0; $j < $N; $j++)            $tr[$i][$j] = $mat[$j][$i];         // Fills transpose of    // mat[N][N] in tr[N][N]    for ($i = 0; $i < $N; $i++)        for ($j = 0; $j < $N; $j++)            if ($mat[$i][$j] != $tr[$i][$j])                return false;    return true;}     // Driver code    $mat= array(array(1, 3, 5),                array(3, 2, 4),                array(5, 4, 1));                     if (isSymmetric($mat, 3))        echo "Yes";    else        echo "No"; // This code is contributed by Sam007?>
<script> // Simple javascript code for check// a matrix is symmetric or not.let  MAX = 100; // Fills transpose of mat[N][N] in tr[N][N]function transpose(mat, tr, N){    for(let i = 0; i < N; i++)        for(let j = 0; j < N; j++)            tr[i][j] = mat[j][i];} // Returns true if mat[N][N] is// symmetric, else falsefunction isSymmetric(mat, N){    let tr = new Array(N);    for(let i = 0; i < N; i++)    {        tr[i] = new Array(MAX);    }    transpose(mat, tr, N);         for(let i = 0; i < N; i++)        for(let j = 0; j < N; j++)            if (mat[i][j] != tr[i][j])                return false;                     return true;} // Driver codelet mat = [ [ 1, 3, 5 ],            [ 3, 2, 4 ],            [ 5, 4, 1 ] ]; if (isSymmetric(mat, 3))    document.write("Yes");else    document.write("No");     // This code is contributed by decode2207 </script>
Output : 
 Yes
Time Complexity : O(N x N) Auxiliary Space : O(N x N)
An Efficient solution to check a matrix is symmetric or not is to compare matrix elements without creating a transpose. We basically need to compare mat[i][j] with mat[j][i].  
C++
Java
Python
C#
PHP
Javascript
// Efficient c++ code for check a matrix is// symmetric or not.#include <iostream>using namespace std; const int MAX = 100; // Returns true if mat[N][N] is symmetric, else falsebool isSymmetric(int mat[][MAX], int N){    for (int i = 0; i < N; i++)        for (int j = 0; j < N; j++)            if (mat[i][j] != mat[j][i])                return false;    return true;} // Driver codeint main(){    int mat[][MAX] = { { 1, 3, 5 },                       { 3, 2, 4 },                       { 5, 4, 1 } };     if (isSymmetric(mat, 3))        cout << "Yes";    else        cout << "No";    return 0;}
// Efficient Java code for check a matrix is// symmetric or no import java.io.*; class GFG {     static int MAX = 100; // Returns true if mat[N][N]// is symmetric, else false static boolean isSymmetric(int mat[][], int N){    for (int i = 0; i < N; i++)        for (int j = 0; j < N; j++)            if (mat[i][j] != mat[j][i])                return false;    return true;} // Driver code         public static void main (String[] args) {            int mat[][] = { { 1, 3, 5 },                    { 3, 2, 4 },                    { 5, 4, 1 } };     if (isSymmetric(mat, 3))        System.out.println(  "Yes");    else                 System.out.println("NO");             }}// This article is contributed by vt_m.
# Efficient Python code for check a matrix is# symmetric or not. # Returns true if mat[N][N] is symmetric, else falsedef isSymmetric(mat, N):    for i in range(N):        for j in range(N):            if (mat[i][j] != mat[j][i]):                return False    return True  # Driver codemat = [ [ 1, 3, 5 ], [ 3, 2, 4 ], [ 5, 4, 1 ] ]if (isSymmetric(mat, 3)):    print "Yes"else:    print "No" # This code is contributed by Sachin Bisht
// Efficient C# code for check a matrix is// symmetric or no using System; class GFG{    //static int MAX = 100;         // Returns true if mat[N][N]    // is symmetric, else false    static bool isSymmetric(int [,]mat, int N)    {        for (int i = 0; i < N; i++)            for (int j = 0; j < N; j++)                if (mat[i, j] != mat[j, i])                    return false;        return true;    }         // Driver code    public static void Main ()    {        int [,]mat = { { 1, 3, 5 },                    { 3, 2, 4 },                    { 5, 4, 1 } };         if (isSymmetric(mat, 3))            Console.WriteLine( "Yes");        else                         Console.WriteLine("NO");             }} // This code is contributed by vt_m.
<?php// Efficient PHP code for// check a matrix is// symmetric or not. $MAX = 100; // Returns true if mat[N][N]// is symmetric, else falsefunction isSymmetric($mat, $N){    for ($i = 0; $i < $N; $i++)        for ($j = 0; $j < $N; $j++)            if ($mat[$i][$j] != $mat[$j][$i])                return false;    return true;} // Driver code$mat = array(array(1, 3, 5),             array(3, 2, 4),             array(5, 4, 1)); if (isSymmetric($mat, 3))    echo("Yes");else    echo("No"); // This code is contributed by Ajit.?>
<script>    // Efficient Javascript code for check a matrix is symmetric or no         let MAX = 100;       // Returns true if mat[N][N]    // is symmetric, else false    function isSymmetric(mat, N)    {        for (let i = 0; i < N; i++)            for (let j = 0; j < N; j++)                if (mat[i][j] != mat[j][i])                    return false;        return true;    }         let mat = [ [ 1, 3, 5 ],               [ 3, 2, 4 ],               [ 5, 4, 1 ] ];       if (isSymmetric(mat, 3))        document.write(  "Yes");    else                   document.write("NO"); </script>
Output: 
Yes
Time Complexity : O(N x N) Auxiliary Space : O(1)
This article is contributed by Dharmendra kumar. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
jit_t
Sam007
mukesh07
decode2207
Matrix
Matrix
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Sudoku | Backtracking-7
The Celebrity Problem
Rotate a matrix by 90 degree in clockwise direction without using any extra space
Unique paths in a Grid with Obstacles
Maximum size rectangle binary sub-matrix with all 1s
Inplace rotate square matrix by 90 degrees | Set 1
Printing all solutions in N-Queen Problem
Count all possible paths from top left to bottom right of a mXn matrix
Search in a row wise and column wise sorted matrix
Gold Mine Problem