# C++ Program to Check if all rows of a matrix are circular rotations of each other

• Last Updated : 11 Jul, 2022

Given a matrix of n*n size, the task is to find whether all rows are circular rotations of each other or not.

Examples:

Input: mat[][] = 1, 2, 3

3, 1, 2

2, 3, 1

Output:  Yes, All rows are rotated permutationof each other.
Input: mat = 1, 2, 3

3, 2, 1

1, 3, 2
Output:  No , As 3, 2, 1 is not a rotated or circular permutation of 1, 2, 3

The idea is based on below article.
A Program to check if strings are rotations of each other or not

Steps :

1. Create a string of first row elements and concatenate the string with itself so that string search operations can be efficiently performed. Let this string be str_cat.
2. Traverse all remaining rows. For every row being traversed, create a string str_curr of current row elements. If str_curr is not a substring of str_cat, return false.
3. Return true.

Below is the implementation of above steps.

## C++

 `// C++ program to check if all rows of a matrix` `// are rotations of each other` `#include ` `using` `namespace` `std;` `const` `int` `MAX = 1000;`   `// Returns true if all rows of mat[0..n-1][0..n-1]` `// are rotations of each other.` `bool` `isPermutedMatrix( ``int` `mat[MAX][MAX], ``int` `n)` `{` `    ``// Creating a string that contains elements of first` `    ``// row.` `    ``string str_cat = ``""``;` `    ``for` `(``int` `i = 0 ; i < n ; i++)` `        ``str_cat = str_cat + ``"-"` `+ to_string(mat[i]);`   `    ``// Concatenating the string with itself so that` `    ``// substring search operations can be performed on` `    ``// this` `    ``str_cat = str_cat + str_cat;`   `    ``// Start traversing remaining rows` `    ``for` `(``int` `i=1; i

Output

`Yes`

Time complexity : O(n3
Auxiliary Space : O(n)

Please refer complete article on Check if all rows of a matrix are circular rotations of each other for more details!

My Personal Notes arrow_drop_up
Recommended Articles
Page :