Related Articles
Count of palindromic plus paths in a given Matrix
• Last Updated : 12 Jun, 2020

Given an N x M matrix of integers, the task is to count the number of palindromic pluses in the array.

Palindromic plus is formed when a palindromic sub-row and palindromic sub-column cross each other at the middle element.

Examples:

Input: matrix = [[1, 2, 1], [2, 3, 2], [3, 2, 1]]
Output: 1
Explanation:
Palindromic row from (1, 0) – > (1, 2) and Palindromic column (0, 1) -> (2, 1) form a palindromic plus.

Input: matrix = [[1, 2, 1, 3], [2, 3, 2, 3], [3, 2, 1, 4]
Output: 2
Explanation:
The palindromic pluses in the given matrix are:  ## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:
To solve the problem, follow the steps below:

• Traverse all the cells that can be the center of a palindromic plus, that is, all the cells apart from the ones belonging to the first and last row and columns.
• For all these cells (i, j), check if a[i][j – 1] is equal to a[i][j + 1] and a[i – 1][j] is equal to a[i + 1][j]. If both the conditions satisfies, then increase the count of palindromic pluses.
• Print the final count of palindromic pluses.

Below is the implementation of the above approach:

## C++

 `// C++ Program to count the number``// of palindromic pluses in``// a given matrix``#include ``using` `namespace` `std;`` ` `// Function to count and return``// the number of palindromic pluses``int` `countPalindromicPlus(``    ``int` `n, ``int` `m,``    ``vector >& a)``{``    ``int` `i, j, k;``    ``int` `count = 0;`` ` `    ``// Traverse all the centers``    ``for` `(i = 1; i < n - 1; i++) {``        ``for` `(j = 1; j < m - 1; j++) {`` ` `            ``// Check for palindromic plus``            ``// Check whether row and``            ``// column are palindrome or not``            ``if` `(a[i + 1][j] == a[i - 1][j]``                ``&& a[i][j - 1] == a[i][j + 1])``                ``++count;``        ``}``    ``}``    ``// Return the answer``    ``return` `count;``}`` ` `// Driver code``int` `main()``{``    ``int` `n = 4, m = 4;`` ` `    ``vector > a``        ``= { { 1, 2, 1, 3 },``            ``{ 2, 3, 2, 3 },``            ``{ 3, 2, 1, 2 },``            ``{ 2, 3, 2, 3 } };``    ``cout << countPalindromicPlus(``                ``n, m, a)``         ``<< endl;`` ` `    ``return` `0;``}`

## Java

 `// Java program to count the number``// of palindromic pluses in``// a given matrix``class` `GFG{`` ` `// Function to count and return``// the number of palindromic pluses``static` `int` `countPalindromicPlus(``int` `n, ``int` `m,``                                ``int` `[][]a)``{``    ``int` `i, j;``    ``int` `count = ``0``;`` ` `    ``// Traverse all the centers``    ``for``(i = ``1``; i < n - ``1``; i++)``    ``{``       ``for``(j = ``1``; j < m - ``1``; j++)``       ``{``           ` `          ``// Check for palindromic plus``          ``// Check whether row and``          ``// column are palindrome or not``          ``if` `(a[i + ``1``][j] == a[i - ``1``][j] && ``              ``a[i][j - ``1``] == a[i][j + ``1``])``              ``++count;``       ``}``    ``}``     ` `    ``// Return the answer``    ``return` `count;``}`` ` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``int` `n = ``4``, m = ``4``;``    ``int` `[][]a = { { ``1``, ``2``, ``1``, ``3` `},``                  ``{ ``2``, ``3``, ``2``, ``3` `},``                  ``{ ``3``, ``2``, ``1``, ``2` `},``                  ``{ ``2``, ``3``, ``2``, ``3` `} };``                   ` `    ``System.out.print(``           ``countPalindromicPlus(n, m, a) + ``"\n"``);``}``}`` ` `// This code is contributed by amal kumar choubey`

## Python3

 `# Python3 Program to count the number``# of palindromic pluses in``# a given matrix`` ` `# Function to count and return``# the number of palindromic pluses``def` `countPalindromicPlus(n, m, a):``    ``i, j, k ``=` `0``, ``0``, ``0``    ``count ``=` `0`` ` `    ``# Traverse all the centers``    ``for` `i ``in` `range``(``1``, n ``-` `1``):``        ``for` `j ``in` `range``(``1``, m ``-` `1``):`` ` `            ``# Check for palindromic plus``            ``# Check whether row and``            ``# column are palindrome or not``            ``if` `(a[i ``+` `1``][j] ``=``=` `a[i ``-` `1``][j]``                ``and` `a[i][j ``-` `1``] ``=``=` `a[i][j ``+` `1``]):``                ``count ``+``=` `1``                 ` `    ``# Return the answer``    ``return` `count`` ` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ``n ``=` `4``    ``m ``=` `4`` ` `    ``a ``=` `[[``1``, ``2``, ``1``, ``3` `],``         ``[``2``, ``3``, ``2``, ``3` `],``         ``[``3``, ``2``, ``1``, ``2` `],``         ``[``2``, ``3``, ``2``, ``3` `]]``    ``print``(countPalindromicPlus(n, m, a))`` ` `# This code is contributed by Mohit Kumar`

## C#

 `// C# program to count the number``// of palindromic pluses in``// a given matrix``using` `System;``class` `GFG{`` ` `// Function to count and return``// the number of palindromic pluses``static` `int` `countPalindromicPlus(``int` `n, ``int` `m,``                                ``int` `[,]a)``{``    ``int` `i, j;``    ``int` `count = 0;`` ` `    ``// Traverse all the centers``    ``for``(i = 1; i < n - 1; i++)``    ``{``        ``for``(j = 1; j < m - 1; j++)``        ``{``             ` `            ``// Check for palindromic plus``            ``// Check whether row and``            ``// column are palindrome or not``            ``if` `(a[i + 1, j] == a[i - 1, j] && ``                ``a[i, j - 1] == a[i, j + 1])``                ``++count;``        ``}``    ``}``     ` `    ``// Return the answer``    ``return` `count;``}`` ` `// Driver code``public` `static` `void` `Main()``{``    ``int` `n = 4, m = 4;``    ``int` `[,]a = {{ 1, 2, 1, 3 },``                ``{ 2, 3, 2, 3 },``                ``{ 3, 2, 1, 2 },``                ``{ 2, 3, 2, 3 }};``                 ` `    ``Console.Write(``            ``countPalindromicPlus(n, m, a) + ``"\n"``);``}``}`` ` `// This code is contributed by Code_Mech`
Output:
```3
```

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up