# Centrosymmetric Matrix

• Last Updated : 05 Dec, 2022

Given a matrix of size n x n. The task is to check whether the given matrix is a Centrosymmetric Matrix or not.
In mathematics, a centrosymmetric matrix is a matrix that is symmetric about its center.

Examples:

Input : n = 3,
m[][] = { { 1, 3, 5 },
{ 6, 8, 6 },
{ 5, 3, 1 } };
Output : Yes

Input : n = 3,
m[][] = { { 1, 3, 5 },
{ 6, 8, 6 },
{ 5, 3, 0 } };
Output : No

The idea is to check for each element whether m[i][j] is equal to m[n – i – 1][n – j – 1]. If any element does not satisfy the above condition, then print “No”, otherwise print “Yes”.

Below is the implementation of the above approach:

## C++

 // CPP Program to check whether given// matrix is centrosymmetric or not.#include using namespace std;#define N 3 bool checkCentrosymmetricted(int n, int m[N][N]){    int mid_row;     // Finding the middle row of the matrix    if (n & 1)        mid_row = n / 2 + 1;    else        mid_row = n / 2;     // for each row upto middle row.    for (int i = 0; i < mid_row; i++) {         // If each element and its corresponding        // element is not equal then return false.        for (int j = 0; j < n; j++) {            if (m[i][j] != m[n - i - 1][n - j - 1])                return false;        }    }     return true;} // Driven Programint main(){    int n = 3;    int m[N][N] = { { 1, 3, 5 },                    { 6, 8, 6 },                    { 5, 3, 1 } };     (checkCentrosymmetricted(n, m) ?              (cout << "Yes") : (cout << "No"));     return 0;}

## Java

 // Java Program to check whether given// matrix is centrosymmetric or not.import java.io.*; class GFG {             static int N = 3;         static boolean checkCentrosymmetricted(                           int n, int m[][])    {        int mid_row;             // Finding the middle row of the        // matrix        if ((n & 1)>0)            mid_row = n / 2 + 1;        else            mid_row = n / 2;             // for each row upto middle row.        for (int i = 0; i < mid_row; i++)        {                 // If each element and its            // corresponding element is            // not equal then return false.            for (int j = 0; j < n; j++)            {                if (m[i][j] !=                  m[n - i - 1][n - j - 1])                    return false;            }        }             return true;    }         // Driven Program    public static void main (String[] args)    {        int n = 3;        int m[][] = { { 1, 3, 5 },                      { 6, 8, 6 },                      { 5, 3, 1 } };     if(checkCentrosymmetricted(n, m))        System.out.println( "Yes");    else        System.out.println( "No");    }} // This code is contributed by anuj_67.

## Python3

 # Python3 Program to check whether given# matrix is centrosymmetric or not. def checkCentrosymmetricted( n, m):     mid_row = 0;     # Finding the middle row    # of the matrix    if ((n & 1) > 0):        mid_row = n / 2 + 1;    else:        mid_row = n / 2;     # for each row upto middle row.    for i in range(int(mid_row)):         # If each element and        # its corresponding        # element is not equal        # then return false.        for j in range(n):            if (m[i][j] != m[n - i - 1][n - j - 1]):                return False;     return True;     # Driver Coden = 3;m = [[1, 3, 5 ],     [ 6, 8, 6 ],     [ 5, 3, 1 ]]; if(checkCentrosymmetricted(n, m)):    print("Yes");else:    print("No");         # This code is contributed by mits

## C#

 // C# Program to check whether given// matrix is centrosymmetric or not.using System; class GFG {             ///static int N = 3;         static bool checkCentrosymmetricted(                        int n, int [,]m)    {        int mid_row;             // Finding the middle row of the        // matrix        if ((n & 1)>0)            mid_row = n / 2 + 1;        else            mid_row = n / 2;             // for each row upto middle row.        for (int i = 0; i < mid_row; i++)        {                 // If each element and its            // corresponding element is            // not equal then return false.            for (int j = 0; j < n; j++)            {                if (m[i,j] !=                m[n - i - 1,n - j - 1])                    return false;            }        }             return true;    }         // Driven Program    public static void Main()    {        int n = 3;        int [,]m = { { 1, 3, 5 },                    { 6, 8, 6 },                    { 5, 3, 1 } };         if(checkCentrosymmetricted(n, m))            Console.WriteLine( "Yes");        else            Console.WriteLine( "No");    }} // This code is contributed by anuj_67.



## Javascript



Output

Yes

Time Complexity: O(N2)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up