给定大小为nxn的矩阵。任务是检查给定矩阵是否为中心对称矩阵。
在数学中,中心对称矩阵是关于其中心对称的矩阵。
例子:
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
想法是检查每个元素m [i] [j]是否等于m [n – i – 1] [n – j – 1]。如果任何元素不满足上述条件,则打印“否”,否则打印“是”。
下面是上述方法的实现:
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 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
输出
Yes
复杂度: O(N 2 )