Imprimir array en patrón de serpiente

Dada una array nxn. En la array dada, debe imprimir los elementos de la array en el patrón de serpiente.

Ejemplos: 

Input :mat[][] = { {10, 20, 30, 40},
                   {15, 25, 35, 45},
                   {27, 29, 37, 48},
                   {32, 33, 39, 50}};
              
Output : 10 20 30 40 45 35 25 15 27 29
         37 48 50 39 33 32 

Input :mat[][] = { {1, 2, 3},
                   {4, 5, 6},
                   {7, 8, 9}};
Output : 1 2 3 6 5 4 7 8 9

Matrix printing

Recorremos todas las filas. Para cada fila, verificamos si es par o impar. Si es par, imprimimos de izquierda a derecha, de lo contrario imprimimos de derecha a izquierda. 

Implementación:

C++

// C++ program to print matrix in snake order
#include <iostream>
#define M 4
#define N 4
using namespace std;
 
void print(int mat[M][N])
{
    // Traverse through all rows
    for (int i = 0; i < M; i++) {
 
        // If current row is even, print from
        // left to right
        if (i % 2 == 0) {
            for (int j = 0; j < N; j++)
                cout << mat[i][j] << " ";
 
        // If current row is odd, print from
        // right to left
        } else {
            for (int j = N - 1; j >= 0; j--)
                cout << mat[i][j] << " ";
        }
    }
}
 
// Driver code
int main()
{
    int mat[M][N] = { { 10, 20, 30, 40 },
                    { 15, 25, 35, 45 },
                    { 27, 29, 37, 48 },
                    { 32, 33, 39, 50 } };
 
    print(mat);
    return 0;
}

Java

// Java program to print matrix in snake order
import java.util.*;
class GFG
{
    static void print(int [][] mat)
    {
        // Traverse through all rows
        for (int i = 0; i < mat.length; i++)
        {
 
            // If current row is even, print from
            // left to right
            if (i % 2 == 0)
            {
                for (int j = 0; j < mat[0].length; j++)
                    System.out.print(mat[i][j] +" ");
 
 
            // If current row is odd, print from
            // right to left
            }
            else
            {
                for (int j = mat[0].length - 1; j >= 0; j--)
                    System.out.print(mat[i][j] +" ");
            }
        }
    }
 
    // Driver code
    public static void main(String[] args)
    {
        int mat[][] = new int[][]
        {
            { 10, 20, 30, 40 },
            { 15, 25, 35, 45 },
            { 27, 29, 37, 48 },
            { 32, 33, 39, 50 }
        };
 
        print(mat);
    }
}
/* This code is contributed by Mr. Somesh Awasthi */

Python3

# Python 3 program to print
# matrix in snake order
M = 4
N = 4
 
def printf(mat):
    global M, N
     
    # Traverse through all rows
    for i in range(M):
         
        # If current row is
        # even, print from
        # left to right
        if i % 2 == 0:
            for j in range(N):
                print(str(mat[i][j]),
                          end = " ")
 
        # If current row is
        # odd, print from
        # right to left
        else:
            for j in range(N - 1, -1, -1):
                print(str(mat[i][j]),
                          end = " ")
 
# Driver code
mat = [[ 10, 20, 30, 40 ],
       [ 15, 25, 35, 45 ],
       [ 27, 29, 37, 48 ],
       [ 32, 33, 39, 50 ]]
 
printf(mat)
 
# This code is contributed
# by ChitraNayal

C#

// C# program to print
// matrix in snake order
using System;
class GFG
{
    static void print(int [,]mat)
    {
        // Traverse through all rows
        for (int i = 0;
                 i < mat.GetLength(0); i++)
        {
 
            // If current row is
            // even, print from
            // left to right
            if (i % 2 == 0)
            {
                for (int j = 0;
                         j < mat.GetLength(1); j++)
                    Console.Write(mat[i, j] + " ");
 
 
            // If current row is
            // odd, print from
            // right to left
            }
            else
            {
                for (int j = mat.GetLength(1) - 1;
                         j >= 0; j--)
                    Console.Write(mat[i, j] + " ");
            }
        }
    }
 
    // Driver code
    public static void Main()
    {
        int [,]mat = {{ 10, 20, 30, 40 },
                      { 15, 25, 35, 45 },
                      { 27, 29, 37, 48 },
                      { 32, 33, 39, 50 }};
 
        print(mat);
    }
}
 
// This code is contributed
// by ChitraNayal

PHP

<?php
// PHP program to print
// matrix in snake order
$M= 4;
$N =4;
 
function printLN($mat)
{
    global $M;
    global $N;
     
    // Traverse through all rows
    for ($i = 0; $i < $M; $i++)
    {
 
        // If current row is even,
        // print from left to right
        if ($i % 2 == 0)
        {
            for ($j = 0; $j < $N; $j++)
                echo $mat[$i][$j], " ";
 
        // If current row is odd,
        // print from right to left
        }
        else
        {
            for ($j = $N - 1; $j >= 0; $j--)
                echo $mat[$i][$j] , " ";
        }
    }
}
 
// Driver code
$mat = array(array(10, 20, 30, 40),
             array(15, 25, 35, 45),
             array(27, 29, 37, 48),
             array(32, 33, 39, 50));
 
printLN($mat);
 
// This code is contributed by ajit
?>

Javascript

<script>
 
// Javascript program to print
// matrix in snake order
let M = 4;
let N = 4;
 
function print(mat)
{
     
    // Traverse through all rows
    for(let i = 0; i < M; i++)
    {
         
        // If current row is even, print from
        // left to right
        if (i % 2 == 0)
        {
            for(let j = 0; j < N; j++)
                document.write(mat[i][j] + " ");
 
        // If current row is odd, print from
        // right to left
        }
        else
        {
            for(let j = N - 1; j >= 0; j--)
                document.write(mat[i][j] + " ");
        }
    }
}
 
// Driver code
let mat = [ [ 10, 20, 30, 40 ],
            [ 15, 25, 35, 45 ],
            [ 27, 29, 37, 48 ],
            [ 32, 33, 39, 50 ] ];
 
print(mat);
 
// This code is contributed by rameshtravel07
</script>
Producción

10 20 30 40 45 35 25 15 27 29 37 48 50 39 33 32 

Complejidad de Tiempo: O(nxm) 
Espacio Auxiliar: O(1)

Este artículo es una contribución de Rakesh Kumar . 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. 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *