Распечатать выкройку 1*2*5*6 –3*4
По заданному целому 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*7Input: 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 )