Распечатать выкройку 1*2*5*6 –3*4

Опубликовано: 22 Февраля, 2023

По заданному целому N задача состоит в том, чтобы напечатать перевернутый треугольник, левая половина которого состоит из элементов в диапазоне [1, N*(N+1)/2], а правая половина состоит из элементов в диапазоне [ N*(N+1)/2 + 1, N*(N+1)].

Примеры:

Input: N = 3 
Output: 
1*2*3*10*11*12
   4*5*8*9
      6*7

Input: n = 4
Output:
1*2*3*4*17*18*19*20
   5*6*7*14*15*16
      8*9*12*13
       10*11 

Подход:

Looking at the pattern we can easily observed that it is following a ZIG-ZAG pattern first few numbers are printed from the top row to the bottom and then numbers are printed from the bottom row to the top increasingly

Pattern

Hyphen Pattern: No of spaces in ith line is i*2 [Here i is 0 based]

Since numbers are in increasing order in this zigzag format we can store those numbers in a 2d dynamic array and print them accordingly with respect to the condition of number of spaces at each row.

Следуйте шагам, указанным ниже, чтобы реализовать идею:

  • Создайте 2D-вектор arr[] размера N*N , чтобы матрица имела размер N*N.
  • Затем пройдитесь по массиву сверху вниз и вставьте числа (Ni) в i- ю строку.
  • Аналогичным образом перемещайтесь снизу вверх и таким же образом толкайте элементы снизу вверх.
  • Запустите цикл и пройдите по столбцу и напечатайте массив:
    • Затем выведите пробелы перед каждой строкой в порядке возрастания, пройдя длину i*2.
    • Печатать * после каждого элемента в строке

Ниже приведена реализация описанного выше подхода.

Временная сложность: O(N 2 )
Вспомогательное пространство: O(N 2 )