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 <bits/stdc++.h> 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 Program int 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 Code n = 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. |
PHP
<?php // PHP Program to check whether given // matrix is centrosymmetric or not. //$N = 3; function checkCentrosymmetricted( $n , $m )
{ $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 ( $i = 0; $i < $mid_row ; $i ++)
{
// If each element and
// its corresponding
// element is not equal
// then return false.
for ( $j = 0; $j < $n ; $j ++) {
if ( $m [ $i ][ $j ] != $m [ $n - $i - 1]
[ $n - $j - 1])
return false;
}
}
return true;
} // Driver Code
$n = 3;
$m = array ( array (1, 3, 5 ),
array ( 6, 8, 6 ),
array ( 5, 3, 1 ));
if (checkCentrosymmetricted( $n , $m ) )
echo "Yes" ;
else
echo "No" ;
// This code is contributed by anuj_67. ?> |
Javascript
<script> // Javascript Program to check whether given // matrix is centrosymmetric or not. let N = 3 function checkCentrosymmetricted( n, m)
{ let mid_row;
// Finding the middle row of the matrix
if (n & 1)
mid_row = Math.floor(n / 2) + 1;
else
mid_row = n / 2;
// for each row upto middle row.
for (let i = 0; i < mid_row; i++) {
// If each element and its corresponding
// element is not equal then return false.
for (let j = 0; j < n; j++) {
if (m[i][j] != m[n - i - 1][n - j - 1])
return false ;
}
}
return true ;
} // Driver Code let n = 3; let m = [ [ 1, 3, 5 ], [ 6, 8, 6 ],
[ 5, 3, 1 ] ];
(checkCentrosymmetricted(n, m) ? (document.write( "Yes" )) : document.write( "No" ));
// This code is contributed by jana_sayanta. </script> |
Output
Yes
Time Complexity: O(N2)
Auxiliary Space: O(1)
Recommended Articles