Given 1’s, 2’s, 3’s ……k’s print them in zig zag way.
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 an array of numbers and insert all the numbers of an array of i-th index into a two-dimensional array until it becomes zero.
Implementation:
C++
#include <bits/stdc++.h>
using namespace std;
void ZigZag( int rows, int columns, int numbers[])
{
int k = 0;
int arr[rows][columns];
for ( int i=0; i<rows; i++)
{
if (i%2==0)
{
for ( int j=0; j<columns and
numbers[k]>0; j++)
{
arr[i][j] = k+1;
numbers[k]--;
if (numbers[k] == 0)
k++;
}
}
else
{
for ( int j=columns-1; j>=0 and
numbers[k]>0; j--)
{
arr[i][j] = k+1;
numbers[k]--;
if (numbers[k]==0)
k++;
}
}
}
for ( int i=0;i<rows;i++)
{
for ( int j=0;j<columns;j++)
cout << arr[i][j] << " " ;
cout << endl;
}
}
int main()
{
int rows = 4;
int columns = 5;
int Numbers[] = {3, 4, 2, 2, 3, 1, 5};
ZigZag(rows, columns, Numbers);
return 0;
}
|
C
#include <stdio.h>
void ZigZag( int rows, int columns, int numbers[])
{
int k = 0;
int arr[rows][columns];
for ( int i=0; i<rows; i++)
{
if (i%2==0)
{
for ( int j=0; j<columns && numbers[k]>0; j++)
{
arr[i][j] = k+1;
numbers[k]--;
if (numbers[k] == 0)
k++;
}
}
else
{
for ( int j=columns-1; j>=0 && numbers[k]>0; j--)
{
arr[i][j] = k+1;
numbers[k]--;
if (numbers[k]==0)
k++;
}
}
}
for ( int i=0;i<rows;i++)
{
for ( int j=0;j<columns;j++)
printf ( "%d " ,arr[i][j]);
printf ( "\n" );
}
}
int main()
{
int rows = 4;
int columns = 5;
int Numbers[] = {3, 4, 2, 2, 3, 1, 5};
ZigZag(rows, columns, Numbers);
return 0;
}
|
Java
import java.util.*;
import java.lang.*;
public class GfG{
public static void ZigZag( int rows,
int columns,
int numbers[])
{
int k = 0 ;
int [][] arr = new int [rows][columns];
for ( int i= 0 ; i<rows; i++)
{
if (i% 2 == 0 )
{
for ( int j= 0 ; j<columns &&
numbers[k]> 0 ; j++)
{
arr[i][j] = k+ 1 ;
numbers[k]--;
if (numbers[k] == 0 )
k++;
}
}
else
{
for ( int j=columns- 1 ; j>= 0 &&
numbers[k]> 0 ; j--)
{
arr[i][j] = k+ 1 ;
numbers[k]--;
if (numbers[k]== 0 )
k++;
}
}
}
for ( int i= 0 ;i<rows;i++)
{
for ( int j= 0 ;j<columns;j++)
System.out.print(arr[i][j] + " " );
System.out.println();
}
}
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);
}
}
|
Python 3
def ZigZag(rows, columns, numbers):
k = 0
arr = [[ 0 for i in range (columns)] for j in range (rows)]
for i in range (rows):
if (i % 2 = = 0 ):
j = 0
while j < columns and numbers[k] > 0 :
arr[i][j] = k + 1
numbers[k] - = 1
if numbers[k] = = 0 :
k + = 1
j + = 1
else :
j = columns - 1
while j> = 0 and numbers[k]> 0 :
arr[i][j] = k + 1
numbers[k] - = 1
if numbers[k] = = 0 :
k + = 1
j - = 1
for i in arr:
for j in i:
print (j, end = " " )
print ()
rows = 4 ;
columns = 5 ;
Numbers = [ 3 , 4 , 2 , 2 , 3 , 1 , 5 ]
ZigZag(rows, columns, Numbers)
|
C#
using System;
public class GfG{
public static void ZigZag( int rows,
int columns,
int []numbers)
{
int k = 0;
int [,] arr = new int [rows,columns];
for ( int i = 0; i < rows; i++)
{
if (i % 2 == 0)
{
for ( int j = 0; j < columns &&
numbers[k] > 0; j++)
{
arr[i,j] = k + 1;
numbers[k]--;
if (numbers[k] == 0)
k++;
}
}
else
{
for ( int j = columns - 1; j >= 0 &&
numbers[k] > 0; j--)
{
arr[i,j] = k + 1;
numbers[k]--;
if (numbers[k] == 0)
k++;
}
}
}
for ( int i = 0;i < rows; i++)
{
for ( int j = 0; j < columns; j++)
Console.Write(arr[i, j] + " " );
Console.WriteLine();
}
}
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);
}
}
|
PHP
<?php
function ZigZag( $rows , $columns , $numbers )
{
$k = 0;
$arr = array ( array ());
for ( $i = 0; $i < $rows ; $i ++)
{
if ( $i % 2==0)
{
for ( $j = 0; $j < $columns and
$numbers [ $k ] > 0; $j ++)
{
$arr [ $i ][ $j ] = $k + 1;
$numbers [ $k ]--;
if ( $numbers [ $k ] == 0)
$k ++;
}
}
else
{
for ( $j = $columns - 1; $j >= 0 and
$numbers [ $k ] > 0; $j --)
{
$arr [ $i ][ $j ] = $k + 1;
$numbers [ $k ]--;
if ( $numbers [ $k ]==0)
$k ++;
}
}
}
for ( $i = 0; $i < $rows ; $i ++)
{
for ( $j = 0; $j < $columns ; $j ++)
echo $arr [ $i ][ $j ] , " " ;
echo "\n" ;
}
}
$rows = 4;
$columns = 5;
$Numbers = array (3, 4, 2, 2, 3, 1, 5);
ZigZag( $rows , $columns , $Numbers );
?>
|
Javascript
<script>
function ZigZag(rows, columns, numbers)
{
let k = 0;
let arr = new Array(rows);
for (let i=0; i<rows; i++)
{
arr[i] = new Array(rows);
for (let j=0; j < columns; j++)
{
arr[i][j] = 0;
}
}
for (let i=0; i<rows; i++)
{
if (i%2==0)
{
for (let j=0; j<columns &&
numbers[k]>0; j++)
{
arr[i][j] = k+1;
numbers[k]--;
if (numbers[k] == 0)
k++;
}
}
else
{
for (let j=columns-1; j>=0 &&
numbers[k]>0; j--)
{
arr[i][j] = k+1;
numbers[k]--;
if (numbers[k]==0)
k++;
}
}
}
for (let i=0;i<rows;i++)
{
for (let j=0;j<columns;j++)
document.write(arr[i][j] + " " );
document.write( "</br>" );
}
}
let rows = 4;
let columns = 5;
let Numbers = [3, 4, 2, 2, 3, 1, 5];
ZigZag(rows, columns, Numbers);
</script>
|
Output
1 1 1 2 2
4 3 3 2 2
4 5 5 5 6
7 7 7 7 7
Time Complexity: O(N*M), as we are using nested loops for traversing the matrix.
Auxiliary Space: O(N*M), as we are using extra space.
Last Updated :
01 Aug, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...