Dada una array 2D, imprímala en forma de zigzag. Ejemplos:
Input : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Output : 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15 20 19 18 17 16 Input : 10 24 32 50 6 17 99 10 11 Output : 10 24 32 17 6 50 99 10 11
CPP
// C++ program to print // matrix in zig-zag form #include <iostream> using namespace std; const int MAX = 100; // Method to print matrix in zig-zag form void printZigZag(int row, int col, int a[][MAX]) { int evenRow = 0; //starts from the first row int oddRow = 1; //starts from the next row while (evenRow<row) { for (int i=0;i<col;i++) { // evenRow will be printed // in the same direction cout<<a[evenRow][i] << " "; } // Skipping next row so as // to get the next evenRow evenRow = evenRow + 2; if(oddRow < row) { for (int i=col-1; i>=0; i--) { // oddRow will be printed in // the opposite direction cout<<a[oddRow][i] << " "; } } // Skipping next row so as // to get the next oddRow oddRow = oddRow + 2; } } // Driver function int main() { int r = 3, c = 5; int mat[][MAX] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}}; printZigZag(r , c , mat); return 0; }
Java
// Java program to print matrix in zig-zag form public class GFG { // Method to print matrix in zig-zag form static void printZigZag(int row, int col, int a[][]) { int evenRow = 0; // starts from the first row int oddRow = 1; // starts from the next row while (evenRow < row) { for (int i = 0; i < col; i++) { // evenRow will be printed in the same direction System.out.print(a[evenRow][i] + " "); } // Skipping next row so as to get the next evenRow evenRow = evenRow + 2; if(oddRow < row) { for (int i = col - 1; i >= 0; i--) { // oddRow will be printed in the opposite direction System.out.print(a[oddRow][i] + " "); } } // Skipping next row so as to get the next oddRow oddRow = oddRow + 2; } } public static void main(String[] args) { int r = 3, c = 5; int mat[][] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}}; printZigZag(r , c , mat); } }
Python3
# Python 3 program to print # matrix in zig-zag form # Method to print matrix # in zig-zag form def printZigZag(row, col, a): evenRow = 0 # starts from the first row oddRow = 1 # starts from the next row while evenRow < row: for i in range(col): # evenRow will be printed # in the same direction print(str(a[evenRow][i] ), end = " ") # Skipping next row so as # to get the next evenRow evenRow = evenRow + 2 if oddRow < row: for i in range(col - 1, -1, -1): # oddRow will be printed in # the opposite direction print(str(a[oddRow][i]), end = " ") # Skipping next row so as # to get the next oddRow oddRow = oddRow + 2 # Driver Code r = 3 c = 5 mat = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]; printZigZag(r , c , mat) # This code is contributed # by ChitraNayal
C#
// C# program to print matrix in zig-zag form using System; public class GFG { // Method to print matrix in zig-zag form static void printZigZag(int row, int col, int[, ] a) { // starts from the first row int evenRow = 0; // starts from the next row int oddRow = 1; while (evenRow < row) { for (int i = 0; i < col; i++) { // evenRow will be printed in // the same direction Console.Write(a[evenRow, i] + " "); } // Skipping next row so as to get the // next evenRow evenRow = evenRow + 2; if(oddRow < row) { for (int i = col - 1; i >= 0; i--) { // oddRow will be printed in the // opposite direction Console.Write(a[oddRow, i] + " "); } } // Skipping next row so as to get // the next oddRow oddRow = oddRow + 2; } } public static void Main() { int r = 3, c = 5; int[, ] mat = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 } }; printZigZag(r, c, mat); } } // This code is contributed by vt_m.
PHP
<?php // PHP program to print // matrix in zig-zag form // Method to print matrix // in zig-zag form function printZigZag($row, $col, $a) { //starts from the first row $evenRow = 0; //starts from the next row $oddRow = 1; while ($evenRow < $row) { for ( $i = 0; $i < $col; $i++) { // evenRow will be printed // in the same direction echo $a[$evenRow][$i], " "; } // Skipping next row so as // to get the next evenRow $evenRow = $evenRow + 2; if($oddRow < $row) { for ($i = $col - 1; $i >= 0; $i--) { // oddRow will be printed in // the opposite direction echo $a[$oddRow][$i], " "; } } // Skipping next row so as // to get the next oddRow $oddRow = $oddRow + 2; } } // Driver Code $r = 3; $c = 5; $mat = array(array(1, 2, 3, 4, 5), array(6, 7, 8, 9, 10), array(11, 12, 13, 14, 15)); printZigZag($r , $c , $mat); // This code is contributed by m_kit. ?>
1 2 3 4 5 10 9 8 7 6 11 12 13 14 15
Complejidad de tiempo: la complejidad de tiempo de la solución anterior es O (fila * columna).
Complejidad espacial : O(1)
Artículos relacionados:
- Recorrido diagonal de Matrix
- Imprimir array en forma antiespiral
- Array de impresión en forma de espiral
Este artículo es una contribución de Kamal Rawal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA