Skip to content
Related Articles

Related Articles

Given 1’s, 2’s, 3’s ……k’s print them in zig zag way.
  • Difficulty Level : Basic
  • Last Updated : 01 Jul, 2019

Given number of rows and columns. And given number of 1’s, 2’s, 3’s ……k’s which needs to be printed. Print them in a zig-zag way.
It is guaranteed that n*m = number of 1’s + 2’s + 3’s + …… + k’s

Examples:

Input :  2 3
         2 1 2 1
Output : 1 1 2
         4 3 3
Explanation :
Here number of rows are 2 and number of columns are 3
and number of 1's are 2
    number of 2's are 1
    number of 3's are 2
    number of 4's are 1
    -----------
   | 1 | 1 | 2 |
   | 3 | 3 | 4 |
    -----------

Input :  4 3
         2 4 3 1 2
Output : 1 1 2
         2 2 2
         3 3 3
         5 5 4
Explanation :
Here number of rows are 4 and number of columns are 3
and number of 1's are 2
    number of 2's are 4 [Note that 2s are printed in]
    number of 3's are 3 [zig zag manner]
    number of 4's are 1
    number of 5's are 2

Approach: We make a two-dimensional array to store all the elements in zig-zag way. we will traverse through all the elements of array of numbers and insert all the numbers of array of i-th index into two-dimensional array until it becomes zero.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to print  given number of 1's, 
// 2's, 3's ....k's in  zig-zag way.
#include <bits/stdc++.h>
using namespace std;
  
// function that prints  given number of 1's, 
// 2's, 3's ....k's in zig-zag way.
void ZigZag(int rows, int columns, int numbers[])
{
    int k = 0;
      
    // two-dimensional array to store numbers. 
    int arr[rows][columns];
      
    for (int i=0; i<rows; i++)
    {
        // for even row.
        if (i%2==0)
        {
            // for each column.
            for (int j=0; j<columns and 
                    numbers[k]>0; j++)
            {
                // storing element.
                arr[i][j] = k+1;
  
                // decrement element at 
                // kth index. 
                numbers[k]--;
                  
                // if array contains zero
                // then increment index to 
                // make this next index
                if (numbers[k] == 0)
                    k++;
            }
        }
          
        // for odd row.
        else
        {
            // for each column.
            for (int j=columns-1; j>=0 and 
                numbers[k]>0; j--)
            {
                // storing element.
                arr[i][j] = k+1;
                  
                // decrement element 
                // at kth index.
                numbers[k]--;
                  
                // if array contains zero then 
                // increment index to make this 
                // next index.
                if (numbers[k]==0)
                    k++;
            }
        }
    }
      
    // printing the stored elements.
    for (int i=0;i<rows;i++)
    {
        for (int j=0;j<columns;j++)
            cout << arr[i][j] << " ";
              
        cout << endl;
    }
}
  
// Driver code for above function.
int main()
{
    int rows = 4;
    int columns = 5;
    int Numbers[] = {3, 4, 2, 2, 3, 1, 5};
    ZigZag(rows, columns, Numbers);    
    return 0;

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to print given
// number of 1's, 2's, 3's ....k's 
// in zig-zag way.
import java.util.*;
import java.lang.*;
  
public class GfG{
      
    // function that prints given number of 1's, 
    // 2's, 3's ....k's in zig-zag way.
    public static void ZigZag(int rows, 
                              int columns, 
                              int numbers[])
    {
        int k = 0;
      
        // two-dimensional array to store numbers. 
        int[][] arr = new int[rows][columns];
      
        for (int i=0; i<rows; i++)
        {
            // for even row.
            if (i%2==0)
            {
                // for each column.
                for (int j=0; j<columns &&
                        numbers[k]>0; j++)
                {
                    // storing element.
                    arr[i][j] = k+1;
  
                    // decrement element at 
                    // kth index. 
                    numbers[k]--;
                  
                    // if array contains zero
                    // then increment index to 
                    // make this next index
                    if (numbers[k] == 0)
                        k++;
                }
            }
          
            // for odd row.
            else
            {
                // for each column.
                for (int j=columns-1; j>=0 &&
                    numbers[k]>0; j--)
                {
                    // storing element.
                    arr[i][j] = k+1;
                  
                    // decrement element 
                    // at kth index.
                    numbers[k]--;
                  
                    // if array contains zero then 
                    // increment index to make this 
                    // next index.
                    if (numbers[k]==0)
                        k++;
                }
            }
        }
      
        // printing the stored elements.
        for (int i=0;i<rows;i++)
        {
            for (int j=0;j<columns;j++)
                System.out.print(arr[i][j] + " ");
              
            System.out.println();
        }
    }
      
    // Driver function 
    public static void main(String argc[])
    {
        int rows = 4;
        int columns = 5;
        int[] Numbers = new int[]{3, 4, 2,
                                  2, 3, 1, 5};
        ZigZag(rows, columns, Numbers); 
    }
}
  
/* This code is contributed by Sagar Shukla */

chevron_right


Python 3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to print given number of 1's, 
# 2's, 3's ....k's in zig-zag way. 
  
# function that prints given number of 1's, 
# 2's, 3's ....k's in zig-zag way. 
def ZigZag(rows, columns, numbers):
    k = 0
      
    # two-dimensional array to store numbers.
    arr = [[0 for i in range(columns)] for j in range(rows)] 
    for i in range(rows):
          
        # for even row.
        if (i % 2 == 0):
              
            # for each column.
            j = 0
            while j < columns and numbers[k] > 0:
                  
                # storing element.
                arr[i][j] = k + 1
                  
                # decrement element at
                # kth index.
                numbers[k] -= 1    
                  
                # if array contains zero
                # then increment index to
                # make this next index
                if numbers[k] == 0:
                    k += 1
                j += 1
        # for odd row.
        else:
              
            # for each column.
            j = columns-1
            while j>=0 and numbers[k]>0:
                  
                # storing element.
                arr[i][j] = k+1
                  
                # decrement element
                # at kth index.
                numbers[k] -= 1
                  
                # if array contains zero then
                # increment index to make this
                # next index.
                if numbers[k] == 0:
                    k += 1
                j -= 1
      
    # printing the stored elements. 
    for i in arr:
        for j in i:
            print(j, end =" ")
        print()
  
# Driver code
rows = 4
columns = 5
Numbers = [3, 4, 2, 2, 3, 1, 5
ZigZag(rows, columns, Numbers)
  
# This code is contributed by
# Rajnis09

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to print given
// number of 1's, 2's, 3's ....k's 
// in zig-zag way.
using System;
  
public class GfG{
      
    // function that prints given number of 1's, 
    // 2's, 3's ....k's in zig-zag way.
    public static void ZigZag(int rows, 
                            int columns, 
                            int []numbers)
    {
        int k = 0;
      
        // two-dimensional array to store numbers. 
        int[,] arr = new int[rows,columns];
      
        for (int i = 0; i < rows; i++)
        {
            // for even row.
            if (i % 2 == 0)
            {
                // for each column.
                for (int j = 0; j < columns &&
                        numbers[k] > 0; j++)
                {
                    // storing element.
                    arr[i,j] = k + 1;
  
                    // decrement element at 
                // kth index. 
                    numbers[k]--;
                  
                    // if array contains zero
                    // then increment index to 
                    // make this next index
                    if (numbers[k] == 0)
                        k++;
                }
            }
          
            // for odd row.
            else
            {
                // for each column.
                for (int j = columns - 1; j >= 0 &&
                    numbers[k] > 0; j--)
                {
                    // storing element.
                    arr[i,j] = k + 1;
                  
                    // decrement element 
                    // at kth index.
                    numbers[k]--;
                  
                    // if array contains zero then 
                    // increment index to make this 
                    // next index.
                    if (numbers[k] == 0)
                        k++;
                }
            }
        }
      
        // printing the stored elements.
        for (int i = 0;i < rows; i++)
        {
            for (int j = 0; j < columns; j++)
            Console.Write(arr[i, j] + " ");
              
            Console.WriteLine();
        }
    }
      
    // Driver function 
    public static void Main()
    {
        int rows = 4;
        int columns = 5;
        int []Numbers = new int[]{3, 4, 2,
                                2, 3, 1, 5};
        ZigZag(rows, columns, Numbers); 
    }
}
  
/* This code is contributed by vt_m*/

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to print given number of 1's, 
// 2's, 3's ....k's in zig-zag way.
  
// function that prints given number of 1's, 
// 2's, 3's ....k's in zig-zag way.
function ZigZag($rows, $columns, $numbers)
{
    $k = 0;
      
    // two-dimensional array 
    // to store numbers. 
    $arr = array(array());
      
    for($i = 0; $i < $rows; $i++)
    {
          
        // for even row.
        if ($i % 2==0)
        {
              
            // for each column.
            for($j = 0; $j < $columns and
                  $numbers[$k] > 0; $j++)
            {
                  
                // storing element.
                $arr[$i][$j] = $k + 1;
  
                // decrement element at 
                // kth index. 
                $numbers[$k]--;
                  
                // if array contains zero
                // then increment index to 
                // make this next index
                if ($numbers[$k] == 0)
                    $k++;
            }
        }
          
        // for odd row.
        else
        {
              
            // for each column.
            for($j = $columns - 1; $j >= 0 and
                       $numbers[$k] > 0; $j--)
            {
                  
                // storing element.
                $arr[$i][$j] = $k + 1;
                  
                // decrement element 
                // at kth index.
                $numbers[$k]--;
                  
                // if array contains zero then 
                // increment index to make this 
                // next index.
                if ($numbers[$k]==0)
                    $k++;
            }
        }
    }
      
    // printing the stored elements.
    for($i = 0; $i < $rows;$i++)
    {
        for($j = 0; $j < $columns; $j++)
            echo $arr[$i][$j] , " ";
              
        echo "\n";
    }
}
  
    // Driver Code
    $rows = 4;
    $columns = 5;
    $Numbers = array(3, 4, 2, 2, 3, 1, 5);
    ZigZag($rows, $columns,$Numbers); 
      
// This code is contributed by anuj_67.
?>

chevron_right



Output:

1 1 1 2 2 
4 3 3 2 2 
4 5 5 5 6 
7 7 7 7 7

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :