📌  相关文章
📜  给定 1's, 2's, 3's ......k's 以 zig zag 方式打印它们。

📅  最后修改于: 2022-05-13 01:57:24.785000             🧑  作者: Mango

给定 1's, 2's, 3's ......k's 以 zig zag 方式打印它们。

给定的行数和列数。并给出需要打印的 1、2、3 ……k 的数量。以之字形方式打印它们。
保证 n*m = 1 的个数 + 2 的个数 + 3 的个数 + …… + k 的个数
例子:

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

方法:我们制作一个二维数组,以之字形方式存储所有元素。我们将遍历一个数字数组的所有元素,并将第 i 个索引的数组的所有数字插入一个二维数组,直到它变为零。

C++
// CPP program to print  given number of 1's,
// 2's, 3's ....k's in  zig-zag way.
#include 
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; i0; 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


Java
// 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; i0; 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


Python 3
# 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


C#
// 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*/


PHP
 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.
?>


Javascript


输出:

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