Print a matrix in Reverse Wave Form

Given a matrix, print it in Reverse Wave Form.

Examples :

Input :  1  2  3  4
         5  6  7  8
         9  10 11 12
         13 14 15 16
Output : 4 8 12 16 15 11 7 3 2 6 10 14 13 9 5 1

Input :  1  9  4  10
         3  6  90 11
         2  30 85 72
         6  31 99 15 
Output : 10 11 72 15 99 85 90 4 9 6 30 31 6 2 3 1



Approach :To get the reverse wave form for a given matrix, we first print the elements of the last column of the matrix in downward direction then print the elements of the 2nd last column in the upward direction, then print the elements in third last column in downward direction and so on. For example 1, the flow goes like :
matrix-reverse-wave-form

Below is the implementation to print reverse wave form of a matrix :

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation to print
// reverse wave form of matrix
#include<bits/stdc++.h>
using namespace std;
  
#define R 4
#define C 4
  
// function to print reverse wave 
// form for a given matrix
void WavePrint(int m, int n, int arr[R][C])
{
    int i, j = n - 1, wave = 1;
  
    /* m     - Ending row index
        n     - Ending column index
        i, j     - Iterator
        wave     - for Direction
        wave = 1 - Wave direction down
        wave = 0 - Wave direction up   */
    while (j >= 0) {
          
        // Check whether to go in
        // upward or downward
        if (wave == 1) {
              
            // Print the element of the matrix
            // downward since the value of wave = 1
            for (i = 0; i < m; i++) 
                cout << arr[i][j] << " ";  
            
            wave = 0;
            j--;
        }
        else {
              
            // Print the elements of the 
            // matrix upward since the value
            // of wave = 0
            for (i = m - 1; i >= 0; i--) 
                cout << arr[i][j] << " ";
              
            wave = 1;
            j--;
        }
    }
}
  
// driver function
int main()
{
    int arr[R][C] = { { 1, 2, 3, 4 },
                      { 5, 6, 7, 8 },
                      { 9, 10, 11, 12 },
                      { 13, 14, 15, 16 } };                    
    WavePrint(R, C, arr);
      
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation to print
// reverse wave form of matrix
import java.io.*;
  
class GFG 
{
    static int R = 4;
    static int C = 4;
      
    // function to print reverse wave 
    // form for a given matrix
    static void WavePrint(int m, int n, int arr[][])
    {
        int i, j = n - 1, wave = 1;
      
        // m- Ending row index
        //n - Ending column index
        //i, j     - Iterator
        //wave     - for Direction
        //wave = 1 - Wave direction down
        //wave = 0 - Wave direction up */
        while (j >= 0
        {
              
            // Check whether to go in
            // upward or downward
            if (wave == 1
            {
                // Print the element of the matrix
                // downward since the value of wave = 1
                for (i = 0; i < m; i++) 
                    System.out.print(arr[i][j] +" "); 
              
                wave = 0;
                j--;
            }
            else {
                  
                // Print the elements of the 
                // matrix upward since the value
                // of wave = 0
                for (i = m - 1; i >= 0; i--) 
                    System.out.print( arr[i][j] + " ");
                  
                wave = 1;
                j--;
            }
        }
    }
      
    // Driver function
    public static void main (String[] args) 
    {
        int arr[][] = { { 1, 2, 3, 4 },
                    { 5, 6, 7, 8 },
                    { 9, 10, 11, 12 },
                    { 13, 14, 15, 16 } };             
        WavePrint(R, C, arr);   
      
    }
}
  
// This code is contributed by vt_m

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation to print
# reverse wave form of matrix
  
R = 4
C = 4
  
# function to print reverse wave 
# form for a given matrix
def wavePrint(m, n, arr):
    j = n - 1
    wave = 1
      
    # m     - Ending row index
    # n     - Ending column index
    # i, j     - Iterator
    # wave     - for Direction
    # wave = 1 - Wave direction down
    # wave = 0 - Wave direction up 
    while j >= 0:
          
        # Check whether to go in
        # upward or downward
        if wave == 1:
      
            # Print the element of the 
            # matrix downward since the
                        # value of wave = 1
            for i in range(m):
                print(arr[i][j], end = " "),
            wave = 0
            j -= 1
              
              
        else:
            # Print the elements of the 
            # matrix upward since the 
            # value of wave = 0
            for i in range(m - 1, -1, -1):
                print(arr[i][j], end = " "),
                  
            wave = 1
            j -= 1
  
# Driver code
arr = [ [ 1, 2, 3, 4 ],
        [ 5, 6, 7, 8 ],
        [ 9, 10, 11, 12 ],
        [ 13, 14, 15, 16 ] ]
          
wavePrint(R, C, arr)
  
# This code is contributed by 
# Upendra Singh Bartwal

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation to print
// reverse wave form of matrix
using System;
  
class GFG {
      
    static int R = 4;
    static int C = 4;
      
    // function to print reverse wave 
    // form for a given matrix
    static void WavePrint(int m, int n, int [,]arr)
    {
          
        int i, j = n - 1, wave = 1;
      
        // m- Ending row index
        // n - Ending column index
        // i, j - Iterator
        // wave - for Direction
        // wave = 1 - Wave direction down
        // wave = 0 - Wave direction up */
        while (j >= 0) 
        {
              
            // Check whether to go in
            // upward or downward
            if (wave == 1) {
                  
                // Print the element of the 
                // matrix downward since the
                // value of wave = 1
                for (i = 0; i < m; i++) 
                    Console.Write(arr[i,j] + " "); 
              
                wave = 0;
                j--;
            }
              
            else {
                  
                // Print the elements of the 
                // matrix upward since the value
                // of wave = 0
                for (i = m - 1; i >= 0; i--) 
                    Console.Write( arr[i,j] + " ");
                  
                wave = 1;
                j--;
            }
        }
    }
      
    // Driver function
    public static void Main () 
    {
        int [,]arr = { { 1, 2, 3, 4 },
                       { 5, 6, 7, 8 },
                       { 9, 10, 11, 12 },
                       { 13, 14, 15, 16 } };
                         
        WavePrint(R, C, arr); 
      
    }
}
  
// This code is contributed by vt_m.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP implementation to print
// reverse wave form of matrix
$R = 4;
$C = 4;
  
// function to print reverse 
// wave form for a given matrix
function WavePrint($m, $n, $arr)
{
    global $R;
    global $C;
  
    $i; $j = $n - 1; $wave = 1;
  
    /*  m - Ending row index
        n - Ending column index
        i, j     - Iterator
        wave     - for Direction
        wave = 1 - Wave direction down
        wave = 0 - Wave direction up */
    while ($j >= 0) 
    {
          
        // Check whether to go in
        // upward or downward
        if ($wave == 1) 
        {
              
            // Print the element of the 
            // matrix downward since the 
            // value of wave = 1
            for ($i = 0; $i < $m; $i++) 
                echo $arr[$i][$j] , " "
          
            $wave = 0;
            $j--;
        }
        else 
        {
              
            // Print the elements of 
            // the matrix upward since
            // the value of wave = 0
            for ($i = $m - 1; $i >= 0; $i--) 
                echo $arr[$i][$j] , " ";
              
            $wave = 1;
            $j--;
        }
    }
}
  
// Driver Code
$arr = array(array(1, 2, 3, 4),
             array(5, 6, 7, 8),
             array(9, 10, 11, 12),
             array(13, 14, 15, 16));                 
WavePrint($R, $C, $arr);
      
// This code is contributed by ajit
?>

chevron_right



Output:

4 8 12 16 15 11 7 3 2 6 10 14 13 9 5 1 


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : jit_t