Imprima una array en forma de onda inversa

Dada una array, imprímala en forma de onda inversa. 

Ejemplos: 

Input :  1  2  3  4
         5  6  7  8
         9  10 11 12
         13 14 15 16
Output : 4 8 12 16 15 11 7 3 2 6 10 14 13 9 5 1

Input :  1  9  4  10
         3  6  90 11
         2  30 85 72
         6  31 99 15 
Output : 10 11 72 15 99 85 90 4 9 6 30 31 6 2 3 1

Enfoque: para obtener la forma de onda inversa para una array dada, primero imprimimos los elementos de la última columna de la array en dirección hacia abajo, luego imprimimos los elementos de la segunda última columna en dirección hacia arriba, luego imprimimos los elementos en la tercera última columna en dirección hacia abajo y así sucesivamente. Para el ejemplo 1, el flujo es así: 
 

matrix-reverse-wave-form

A continuación se muestra la implementación para imprimir la forma de onda inversa de una array: 
 

C++

// C++ implementation to print
// reverse wave form of matrix
#include<bits/stdc++.h>
using namespace std;
 
#define R 4
#define C 4
 
// function to print reverse wave
// form for a given matrix
void WavePrint(int m, int n, int arr[R][C])
{
    int i, j = n - 1, wave = 1;
 
    /* m     - Ending row index
        n     - Ending column index
        i, j     - Iterator
        wave     - for Direction
        wave = 1 - Wave direction down
        wave = 0 - Wave direction up   */
    while (j >= 0) {
         
        // Check whether to go in
        // upward or downward
        if (wave == 1) {
             
            // Print the element of the matrix
            // downward since the value of wave = 1
            for (i = 0; i < m; i++)
                cout << arr[i][j] << " "; 
           
            wave = 0;
            j--;
        }
        else {
             
            // Print the elements of the
            // matrix upward since the value
            // of wave = 0
            for (i = m - 1; i >= 0; i--)
                cout << arr[i][j] << " ";
             
            wave = 1;
            j--;
        }
    }
}
 
// driver function
int main()
{
    int arr[R][C] = { { 1, 2, 3, 4 },
                      { 5, 6, 7, 8 },
                      { 9, 10, 11, 12 },
                      { 13, 14, 15, 16 } };                   
    WavePrint(R, C, arr);
     
    return 0;
}

Java

// Java implementation to print
// reverse wave form of matrix
import java.io.*;
 
class GFG
{
    static int R = 4;
    static int C = 4;
     
    // function to print reverse wave
    // form for a given matrix
    static void WavePrint(int m, int n, int arr[][])
    {
        int i, j = n - 1, wave = 1;
     
        // m- Ending row index
        //n - Ending column index
        //i, j     - Iterator
        //wave     - for Direction
        //wave = 1 - Wave direction down
        //wave = 0 - Wave direction up */
        while (j >= 0)
        {
             
            // Check whether to go in
            // upward or downward
            if (wave == 1)
            {
                // Print the element of the matrix
                // downward since the value of wave = 1
                for (i = 0; i < m; i++)
                    System.out.print(arr[i][j] +" ");
             
                wave = 0;
                j--;
            }
            else {
                 
                // Print the elements of the
                // matrix upward since the value
                // of wave = 0
                for (i = m - 1; i >= 0; i--)
                    System.out.print( arr[i][j] + " ");
                 
                wave = 1;
                j--;
            }
        }
    }
     
    // Driver function
    public static void main (String[] args)
    {
        int arr[][] = { { 1, 2, 3, 4 },
                    { 5, 6, 7, 8 },
                    { 9, 10, 11, 12 },
                    { 13, 14, 15, 16 } };            
        WavePrint(R, C, arr);  
     
    }
}
 
// This code is contributed by vt_m

Python3

# Python3 implementation to print
# reverse wave form of matrix
 
R = 4
C = 4
 
# function to print reverse wave
# form for a given matrix
def wavePrint(m, n, arr):
    j = n - 1
    wave = 1
     
    # m     - Ending row index
    # n     - Ending column index
    # i, j     - Iterator
    # wave     - for Direction
    # wave = 1 - Wave direction down
    # wave = 0 - Wave direction up
    while j >= 0:
         
        # Check whether to go in
        # upward or downward
        if wave == 1:
     
            # Print the element of the
            # matrix downward since the
                        # value of wave = 1
            for i in range(m):
                print(arr[i][j], end = " "),
            wave = 0
            j -= 1
             
             
        else:
            # Print the elements of the
            # matrix upward since the
            # value of wave = 0
            for i in range(m - 1, -1, -1):
                print(arr[i][j], end = " "),
                 
            wave = 1
            j -= 1
 
# Driver code
arr = [ [ 1, 2, 3, 4 ],
        [ 5, 6, 7, 8 ],
        [ 9, 10, 11, 12 ],
        [ 13, 14, 15, 16 ] ]
         
wavePrint(R, C, arr)
 
# This code is contributed by
# Upendra Singh Bartwal

C#

// C# implementation to print
// reverse wave form of matrix
using System;
 
class GFG {
     
    static int R = 4;
    static int C = 4;
     
    // function to print reverse wave
    // form for a given matrix
    static void WavePrint(int m, int n, int [,]arr)
    {
         
        int i, j = n - 1, wave = 1;
     
        // m- Ending row index
        // n - Ending column index
        // i, j - Iterator
        // wave - for Direction
        // wave = 1 - Wave direction down
        // wave = 0 - Wave direction up */
        while (j >= 0)
        {
             
            // Check whether to go in
            // upward or downward
            if (wave == 1) {
                 
                // Print the element of the
                // matrix downward since the
                // value of wave = 1
                for (i = 0; i < m; i++)
                    Console.Write(arr[i,j] + " ");
             
                wave = 0;
                j--;
            }
             
            else {
                 
                // Print the elements of the
                // matrix upward since the value
                // of wave = 0
                for (i = m - 1; i >= 0; i--)
                    Console.Write( arr[i,j] + " ");
                 
                wave = 1;
                j--;
            }
        }
    }
     
    // Driver function
    public static void Main ()
    {
        int [,]arr = { { 1, 2, 3, 4 },
                       { 5, 6, 7, 8 },
                       { 9, 10, 11, 12 },
                       { 13, 14, 15, 16 } };
                        
        WavePrint(R, C, arr);
     
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP implementation to print
// reverse wave form of matrix
$R = 4;
$C = 4;
 
// function to print reverse
// wave form for a given matrix
function WavePrint($m, $n, $arr)
{
    global $R;
    global $C;
 
    $i; $j = $n - 1; $wave = 1;
 
    /*  m - Ending row index
        n - Ending column index
        i, j     - Iterator
        wave     - for Direction
        wave = 1 - Wave direction down
        wave = 0 - Wave direction up */
    while ($j >= 0)
    {
         
        // Check whether to go in
        // upward or downward
        if ($wave == 1)
        {
             
            // Print the element of the
            // matrix downward since the
            // value of wave = 1
            for ($i = 0; $i < $m; $i++)
                echo $arr[$i][$j] , " ";
         
            $wave = 0;
            $j--;
        }
        else
        {
             
            // Print the elements of
            // the matrix upward since
            // the value of wave = 0
            for ($i = $m - 1; $i >= 0; $i--)
                echo $arr[$i][$j] , " ";
             
            $wave = 1;
            $j--;
        }
    }
}
 
// Driver Code
$arr = array(array(1, 2, 3, 4),
             array(5, 6, 7, 8),
             array(9, 10, 11, 12),
             array(13, 14, 15, 16));                
WavePrint($R, $C, $arr);
     
// This code is contributed by ajit
?>

Javascript

<script>
 
// Javascript implementation to print
// reverse wave form of matrix
R = 4
C = 4
 
// Function to print reverse wave
// form for a given matrix
function WavePrint(m, n, arr)
{
    var i, j = n - 1, wave = 1;
     
    /* m     - Ending row index
       n     - Ending column index
       i, j     - Iterator
       wave     - for Direction
       wave = 1 - Wave direction down
       wave = 0 - Wave direction up */
    while (j >= 0)
    {
         
        // Check whether to go in
        // upward or downward
        if (wave == 1)
        {
             
            // Print the element of the matrix
            // downward since the value of wave = 1
            for(i = 0; i < m; i++)
                document.write( arr[i][j] + " ");
             
            wave = 0;
            j--;
        }
        else
        {
             
            // Print the elements of the
            // matrix upward since the value
            // of wave = 0
            for(i = m - 1; i >= 0; i--)
                document.write( arr[i][j] + " ");
             
            wave = 1;
            j--;
        }
    }
}
 
// Driver code
var arr = [ [ 1, 2, 3, 4 ],
            [ 5, 6, 7, 8 ],
            [ 9, 10, 11, 12 ],
            [ 13, 14, 15, 16 ] ];                   
WavePrint(R, C, arr);
 
// This code is contributed by itsok
 
</script>

Producción: 
 

4 8 12 16 15 11 7 3 2 6 10 14 13 9 5 1 

Análisis de Complejidad

  • Tiempo Complejidad : O(N 2 )
  • Espacio Auxiliar: O(1)
     

Publicación traducida automáticamente

Artículo escrito por Naman_Garg 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 *