给定一个矩阵mat[][] ,任务是检查矩阵的行主序路径是否是回文。
例子:
Input: mat[][] = {{1, 2, 3}, {4, 5, 4}, {3, 2, 1}}
Output: YES
Explanation:
Row-major order traversal of matrix is –
1 => 2 => 3 => 4 => 5 => 4 => 3 => 2 => 1
Reverse row-major order traversal of matrix is –
1 => 2 => 3 => 4 => 5 => 4 => 3 => 2 => 1
Since, the reverse and forward traversal of matrix is same.
Therefore, it is a palindrome.
Input: mat[][] = {{1, 2}, {2, 3}}
Output: NO
方法:思想是遍历半矩阵,同时检查其对半元素是否相同。那是对于 i 和 j 的索引,检查和 .如果任何索引存在不匹配,则打印 NO。
下面是上述方法的实现:
C++
// C++ implementation to check if
// row-major order traversal of
// matrix is palindrome or not
#include
using namespace std;
// Function to check if row-major order
// traversal of the matrix is is palindrome
bool isPal(int a[3][3], int n, int m)
{
// Loop to check if the matrix is
// matrix is palindrome or not
for (int i = 0; i < n / 2; i++) {
for (int j = 0; j < m - 1; j++) {
if (a[i][j] != a[n - 1 - i][m - 1 - j])
return false;
}
}
return true;
}
// Driver Code
int main()
{
int n = 3, m = 3;
int a[3][3] = { { 1, 2, 3 },
{ 4, 5, 4 },
{ 3, 2, 1 } };
if (isPal(a, n, m)) {
cout << "YES" << endl;
}
else {
cout << "NO" << endl;
}
}
Java
// Java implementation to check if
// row-major order traversal of
// matrix is palindrome or not
import java.util.*;
class GFG{
// Function to check if row-major order
// traversal of the matrix is is palindrome
static boolean isPal(int a[][], int n, int m)
{
// Loop to check if the matrix is
// matrix is palindrome or not
for(int i = 0; i < n / 2; i++)
{
for(int j = 0; j < m - 1; j++)
{
if (a[i][j] != a[n - 1 - i][m - 1 - j])
return false;
}
}
return true;
}
// Driver Code
public static void main(String[] args)
{
int n = 3, m = 3;
int a[][] = { { 1, 2, 3 },
{ 4, 5, 4 },
{ 3, 2, 1 } };
if (isPal(a, n, m))
{
System.out.print("YES" + "\n");
}
else
{
System.out.print("NO" + "\n");
}
}
}
// This code is contributed by gauravrajput1
Python3
# Python3 implementation to check if
# row-major order traversal of
# matrix is palindrome or not
# Function to check if row-major order
# traversal of the matrix is is palindrome
def isPal(a, n, m):
# Loop to check if the matrix is
# matrix is palindrome or not
for i in range(0, n // 2):
for j in range(0, m - 1):
if (a[i][j] != a[n - 1 - i][m - 1 - j]):
return False;
return True;
# Driver Code
if __name__ == '__main__':
n = 3;
m = 3;
a = [[1, 2, 3], [4, 5, 4], [3, 2, 1]];
if (isPal(a, n, m)):
print("YES");
else:
print("NO");
# This code is contributed by Princi Singh
C#
// C# implementation to check if
// row-major order traversal of
// matrix is palindrome or not
using System;
class GFG{
// Function to check if row-major order
// traversal of the matrix is is palindrome
static bool isPal(int[,]a, int n, int m)
{
// Loop to check if the matrix is
// matrix is palindrome or not
for(int i = 0; i < n / 2; i++)
{
for(int j = 0; j < m - 1; j++)
{
if (a[i, j] != a[n - 1 - i,
m - 1 - j])
return false;
}
}
return true;
}
// Driver Code
public static void Main(String[] args)
{
int n = 3, m = 3;
int[,]a = { { 1, 2, 3 },
{ 4, 5, 4 },
{ 3, 2, 1 } };
if (isPal(a, n, m))
{
Console.Write("YES" + "\n");
}
else
{
Console.Write("NO" + "\n");
}
}
}
// This code is contributed by gauravrajput1
Javascript
输出:
YES