Print a given matrix in zigzag form

11 Jul, 2022
Given a 2D array, print it in zigzag form. Examples : 
Input : 
        1    2   3   4   5
        6    7   8   9   10
        11   12  13  14  15
        16  17  18  19   20
Output :
1 2 3 4 5 10 9 8 7 6 11 12 13 14 15 20 19 18 17 16 


Input :
        10    24   32   
        50    6    17   
        99    10   11  
         
Output :
10 24 32 17 6 50 99 10 11
 
CPP
Java
Python3
C#
PHP
// C++ program to print// matrix in zig-zag form#include <iostream>using namespace std;const int MAX = 100;       // Method to print matrix in zig-zag form    void printZigZag(int row, int col, int a[][MAX])    {        int evenRow = 0; //starts from the first row        int oddRow = 1; //starts from the next row           while (evenRow<row)        {            for (int i=0;i<col;i++)            {                // evenRow will be printed                        // in the same direction                cout<<a[evenRow][i] << " ";            }                           // Skipping next row so as                // to get the next evenRow            evenRow = evenRow + 2;                           if(oddRow < row)            {                for (int i=col-1; i>=0; i--)                {                // oddRow will be printed in                    // the opposite direction                cout<<a[oddRow][i] << " ";                }            }                       // Skipping next row so as                // to get the next oddRow            oddRow = oddRow + 2;        }    }   // Driver functionint main() {       int r = 3, c = 5;      int mat[][MAX] = { {1, 2, 3, 4, 5},                         {6, 7, 8, 9, 10},                         {11, 12, 13, 14, 15}};           printZigZag(r , c , mat);      return 0;}
// Java program to print matrix in zig-zag formpublic class GFG{    // Method to print matrix in zig-zag form    static void printZigZag(int row, int col, int a[][])    {        int evenRow = 0; // starts from the first row        int oddRow = 1; // starts from the next row           while (evenRow < row)        {            for (int i = 0; i < col; i++)            {                // evenRow will be printed in the same direction                System.out.print(a[evenRow][i] + " ");            }                           // Skipping next row so as to get the next evenRow            evenRow = evenRow + 2;                           if(oddRow < row)            {            for (int i = col - 1; i >= 0; i--)            {                // oddRow will be printed in the opposite direction                System.out.print(a[oddRow][i] + " ");            }            }                       // Skipping next row so as to get the next oddRow            oddRow = oddRow + 2;        }    }       public static void main(String[] args)    {           int r = 3, c = 5;           int mat[][] = { {1, 2, 3, 4, 5},                         {6, 7, 8, 9, 10},                         {11, 12, 13, 14, 15}};           printZigZag(r , c , mat);    }}
# Python 3 program to print# matrix in zig-zag form   # Method to print matrix# in zig-zag formdef printZigZag(row, col, a):    evenRow = 0 # starts from the first row    oddRow = 1 # starts from the next row       while evenRow < row:        for i in range(col):                           # evenRow will be printed            # in the same direction            print(str(a[evenRow][i] ),                           end = " ")                                      # Skipping next row so as        # to get the next evenRow        evenRow = evenRow + 2                       if oddRow < row:            for i in range(col - 1, -1, -1):                                   # oddRow will be printed in                # the opposite direction                print(str(a[oddRow][i]),                             end = " ")                           # Skipping next row so as        # to get the next oddRow        oddRow = oddRow + 2   # Driver Coder = 3c = 5   mat = [[1, 2, 3, 4, 5],       [6, 7, 8, 9, 10],       [11, 12, 13, 14, 15]];   printZigZag(r , c , mat)   # This code is contributed# by ChitraNayal
// C# program to print matrix in zig-zag formusing System;   public class GFG {           // Method to print matrix in zig-zag form    static void printZigZag(int row, int col, int[, ] a)    {                   // starts from the first row        int evenRow = 0;                   // starts from the next row        int oddRow = 1;           while (evenRow < row) {            for (int i = 0; i < col; i++) {                                   // evenRow will be printed in                // the same direction                Console.Write(a[evenRow, i] + " ");            }               // Skipping next row so as to get the            // next evenRow            evenRow = evenRow + 2;               if(oddRow < row)            {                for (int i = col - 1; i >= 0; i--)                {                                       // oddRow will be printed in the                    // opposite direction                    Console.Write(a[oddRow, i] + " ");                }            }               // Skipping next row so as to get            // the next oddRow            oddRow = oddRow + 2;        }    }       public static void Main()    {           int r = 3, c = 5;                   int[, ] mat = { { 1, 2, 3, 4, 5 },                        { 6, 7, 8, 9, 10 },                        { 11, 12, 13, 14, 15 }                      };           printZigZag(r, c, mat);    }}   // This code is contributed by vt_m.
<?php// PHP program to print// matrix in zig-zag form   // Method to print matrix// in zig-zag formfunction printZigZag($row, $col, $a)    {        //starts from the first row        $evenRow = 0;                   //starts from the next row        $oddRow = 1;           while ($evenRow < $row)        {            for ( $i = 0; $i < $col; $i++)            {                // evenRow will be printed                // in the same direction                echo $a[$evenRow][$i], " ";            }                           // Skipping next row so as            // to get the next evenRow            $evenRow = $evenRow + 2;                           if($oddRow < $row)            {                for ($i = $col - 1; $i >= 0; $i--)                {                // oddRow will be printed in                // the opposite direction                echo $a[$oddRow][$i], " ";                }            }                       // Skipping next row so as            // to get the next oddRow            $oddRow = $oddRow + 2;        }    }   // Driver Code$r = 3; $c = 5;$mat = array(array(1, 2, 3, 4, 5),             array(6, 7, 8, 9, 10),             array(11, 12, 13, 14, 15));   printZigZag($r , $c , $mat);       // This code is contributed by m_kit.?>
1 2 3 4 5 10 9 8 7 6 11 12 13 14 15 
Time Complexity: Time complexity of the above solution is O(row*column). 
Space Complexity: O(row*column) for 2-d array
Related Articles:
Diagonal traversal of Matrix
Print matrix in antispiral form
Print matrix in spiral form
This article is contributed by Kamal Rawal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
jit_t
ukasp
RohanPrajapati
_shinchancode
technophpfij
pattern-printing
Matrix
pattern-printing
Matrix
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.