Given an n x n matrix in the given matrix, you have to print the elements of the matrix in the snake pattern.
Examples:
Input :mat[][] = { {10, 20, 30, 40}, {15, 25, 35, 45}, {27, 29, 37, 48}, {32, 33, 39, 50}}; Output : 10 20 30 40 45 35 25 15 27 29 37 48 50 39 33 32 Input :mat[][] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; Output : 1 2 3 6 5 4 7 8 9
We traverse all rows. For every row, we check if it is even or odd. If even, we print from left to right else print from right to left.
C++
// C++ program to print matrix in snake order #include <iostream> #define M 4 #define N 4 using namespace std;
void print( int mat[M][N])
{ // Traverse through all rows
for ( int i = 0; i < M; i++) {
// If current row is even, print from
// left to right
if (i % 2 == 0) {
for ( int j = 0; j < N; j++)
cout << mat[i][j] << " " ;
// If current row is odd, print from
// right to left
} else {
for ( int j = N - 1; j >= 0; j--)
cout << mat[i][j] << " " ;
}
}
} // Driver code int main()
{ int mat[][] = { { 10, 20, 30, 40 },
{ 15, 25, 35, 45 },
{ 27, 29, 37, 48 },
{ 32, 33, 39, 50 } };
print(mat);
return 0;
} |
Output :
10 20 30 40 45 35 25 15 27 29 37 48 50 39 33 32
Time complexity: O(N^2) for given N*N matrix
Auxiliary Space: O(1)
Please refer complete article on Print matrix in snake pattern for more details!
Recommended Articles
10. Snake Game in C