# Print a matrix in alternate manner (left to right then right to left)

Last Updated : 07 Jul, 2022

Given a 2D array, the task is to print the 2D in alternate manner (First row from left to right, then from right to left, and so on).

Examples:

```Input : arr[][2] = {{1, 2}
{2, 3}};
Output : 1  2  3  2

Input :arr[][3] = { { 7 , 2 , 3 },
{ 2 , 3 , 4 },
{ 5 , 6 ,  1 }};
Output : 7  2   3  4  3  2  5  6  1```

The solution of this problem is that run two loops and print row in left to right and right to left manners. We maintain a flag to see if current row should be printed from left to right or right to left. We toggle the flag after every iteration.

Implementation:

## C++

 `// C++ program to print matrix in alternate manner` `#include` `using` `namespace` `std;` `#define R 3` `#define C 3`   `// Function for print matrix in alternate manner` `void` `convert(``int` `arr[R][C])` `{` `    ``bool` `leftToRight = ``true``;` `    ``for` `(``int` `i=0; i=0; j--)` `                ``printf``(``"%d "``,arr[i][j]);` `        ``}`   `        ``leftToRight = !leftToRight;` `    ``}` `}`   `// Driver code` `int` `main()` `{` `    ``int` `arr[][C] =` `    ``{` `        ``{ 1 , 2 , 3 },` `        ``{ 3 , 2 , 1 },` `        ``{ 4 , 5 , 6 },` `    ``};`   `    ``convert(arr);` `    ``return` `0;` `}`

## Java

 `//Java program to print matrix in alternate manner ` `class` `GFG {`   `    ``static` `final` `int` `R = ``3``;` `    ``static` `final` `int` `C = ``3``;`   `// Function for print matrix in alternate manner ` `    ``static` `void` `convert(``int` `arr[][]) {` `        ``boolean` `leftToRight = ``true``;` `        ``for` `(``int` `i = ``0``; i < R; i++) {` `            ``if` `(leftToRight) {` `                ``for` `(``int` `j = ``0``; j < C; j++) {` `                    ``System.out.printf(``"%d "``, arr[i][j]);` `                ``}` `            ``} ``else` `{` `                ``for` `(``int` `j = C - ``1``; j >= ``0``; j--) {` `                    ``System.out.printf(``"%d "``, arr[i][j]);` `                ``}` `            ``}`   `            ``leftToRight = !leftToRight;` `        ``}` `    ``}`   `// Driver code ` `    ``static` `public` `void` `main(String[] args) {` `        ``int` `arr[][]` `                ``= {` `                    ``{``1``, ``2``, ``3``},` `                    ``{``3``, ``2``, ``1``},` `                    ``{``4``, ``5``, ``6``},};`   `        ``convert(arr);` `    ``}` `}`   `// This code is contributed by Rajput-Ji`

## Python 3

 `# Python 3 program to print matrix ` `# in alternate manner` `R ``=` `3` `C ``=` `3`   `# Function for print matrix` `# in alternate manner` `def` `convert(arr):`   `    ``leftToRight ``=` `True` `    ``for` `i ``in` `range``(R):` `        ``if` `(leftToRight):` `            ``for` `j ``in` `range``(C):` `                ``print``(arr[i][j], end ``=` `" "``)` `    `  `        ``else``:` `            ``for` `j ``in` `range``(C ``-` `1``, ``-``1``, ``-``1``):` `                ``print``(arr[i][j], end ``=` `" "``)`   `        ``leftToRight ``=` `not` `leftToRight`   `# Driver code` `if` `__name__ ``=``=` `"__main__"``:` `    ``arr ``=``[[ ``1` `, ``2` `, ``3` `],` `          ``[ ``3` `, ``2` `, ``1` `],` `          ``[ ``4` `, ``5` `, ``6` `]]`   `    ``convert(arr)`   `# This code is contributed ` `# by ChitraNayal`

## C#

 `    `  `//C# program to print matrix in alternate manner` `using` `System;` `public` `class` `GFG {` ` `  `    ``static` `readonly` `int` `R = 3;` `    ``static` `readonly` `int` `C = 3;` ` `  `// Function for print matrix in alternate manner ` `    ``static` `void` `convert(``int` `[,]arr) {` `        ``bool` `leftToRight = ``true``;` `        ``for` `(``int` `i = 0; i < R; i++) {` `            ``if` `(leftToRight) {` `                ``for` `(``int` `j = 0; j < C; j++) {` `                    ``Console.Write(arr[i,j]+``" "``);` `                ``}` `            ``} ``else` `{` `                ``for` `(``int` `j = C - 1; j >= 0; j--) {` `                    ``Console.Write(arr[i,j]+``" "``);` `                ``}` `            ``}` ` `  `            ``leftToRight = !leftToRight;` `        ``}` `    ``}` ` `  `// Driver code ` `    ``static` `public` `void` `Main() {` `        ``int` `[,]arr` `                ``= {` `                    ``{1, 2, 3},` `                    ``{3, 2, 1},` `                    ``{4, 5, 6},};` ` `  `        ``convert(arr);` `    ``}` `}` ` `  `// This code is contributed by Rajput-Ji`

## PHP

 `= 0; ``\$j``--)` `                ``echo` `\$arr``[``\$i``][``\$j``], ``" "``;` `        ``}`   `        ``\$leftToRight` `= !``\$leftToRight``;` `    ``}` `}`   `// Driver code` `\$arr` `= ``array``(``array``(1 , 2 , 3 ),` `             ``array``(3 , 2 , 1 ),` `             ``array``(4 , 5 , 6 ));`   `convert(``\$arr``);`   `// This code is contributed by ajit` `?>`

## Javascript

 ``

Output

`1 2 3 1 2 3 4 5 6 `

Time Complexity : O(R*C)
Space Complexity : O(1)

Previous
Next