Invertir filas y columnas de una array alternativamente

Dada una array arr[][] de tamaño M*N , donde M es el número de filas y N es el número de columnas . La tarea es invertir las filas y columnas de la array alternativamente , es decir, comenzar invirtiendo la primera fila, luego la segunda columna, y así sucesivamente.

Ejemplos

Entrada : arr[][] = { 
{3, 4, 1, 8},  
{11, 23, 43, 21},  
{12, 17, 65, 91},  
{71, 56, 34, 24} 
}
Salida : { 
{8, 56, 4, 24},  
{11, 17, 43, 12},  
{91, 65, 23, 21},  
{71, 1, 34, 3} 
}
Explicación : Operaciones a seguir: 

  • Invertir la primera fila
  • Invertir la segunda columna
  • Invertir la tercera fila
  • Invertir la cuarta fila

Entrada : { {11, 23, 43, 21}, {12, 17, 65, 91}, {71, 56, 34, 24} }
Salida : { {21, 56, 23, 71}, {12, 17 , 65, 91}, {24, 34, 43, 11} } 

 

Enfoque: la tarea se puede resolver simplemente ejecutando dos bucles while para recorrer filas y columnas alternativamente. Al final, imprima la array resultante.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program to find Reverse the
// rows and columns of a matrix alternatively.
#include <bits/stdc++.h>
using namespace std;
const int N = 4;
const int M = 4;
 
// Print matrix elements
void showArray(int arr[][N])
{
    for (int i = 0; i < M; i++) {
        for (int j = 0; j < N; j++)
            cout << arr[i][j] << " ";
        cout << endl;
    }
}
 
// Function to Reverse the rows and columns
// of a matrix alternatively.
void reverseAlternate(int arr[][N])
{
    int turn = 0;
 
    while (turn < M && turn < N) {
        if (turn % 2 == 0) {
            int start = 0, end = N - 1, temp;
            while (start < end) {
                temp = arr[turn][start];
                arr[turn][start] = arr[turn][end];
                arr[turn][end] = temp;
                start += 1;
                end -= 1;
            }
            turn += 1;
        }
 
        if (turn % 2 == 1) {
            int start = 0, end = M - 1, temp;
            while (start < end) {
                temp = arr[start][turn];
                arr[start][turn] = arr[end][turn];
                arr[end][turn] = temp;
                start += 1;
                end -= 1;
            }
            turn += 1;
        }
    }
}
 
// Driver code
int main()
{
 
    int matrix[][N] = { { 3, 4, 1, 8 },
                        { 11, 23, 43, 21 },
                        { 12, 17, 65, 91 },
                        { 71, 56, 34, 24 } };
    reverseAlternate(matrix);
    showArray(matrix);
}

Java

// Java program for the above approach
import java.util.*;
public class GFG
{
  static int N = 4;
  static int M = 4;
 
  // Print matrix elements
  static void showArray(int arr[][])
  {
    for (int i = 0; i < M; i++) {
      for (int j = 0; j < N; j++)
        System.out.print(arr[i][j] + " ");
      System.out.println();
    }
  }
 
  // Function to Reverse the rows and columns
  // of a matrix alternatively.
  static void reverseAlternate(int arr[][])
  {
    int turn = 0;
 
    while (turn < M && turn < N) {
      if (turn % 2 == 0) {
        int start = 0, end = N - 1, temp;
        while (start < end) {
          temp = arr[turn][start];
          arr[turn][start] = arr[turn][end];
          arr[turn][end] = temp;
          start += 1;
          end -= 1;
        }
        turn += 1;
      }
 
      if (turn % 2 == 1) {
        int start = 0, end = M - 1, temp;
        while (start < end) {
          temp = arr[start][turn];
          arr[start][turn] = arr[end][turn];
          arr[end][turn] = temp;
          start += 1;
          end -= 1;
        }
        turn += 1;
      }
    }
  }
 
  // Driver Code
  public static void main(String args[])
  {
 
    int matrix[][] = { { 3, 4, 1, 8 },
                      { 11, 23, 43, 21 },
                      { 12, 17, 65, 91 },
                      { 71, 56, 34, 24 } };
    reverseAlternate(matrix);
    showArray(matrix);
  }
}
 
// This code is contributed by Samim Hossain Mondal.

Python3

# Python3 program to find Reverse the
# rows and columns of a matrix alternatively.
N = 4
M = 4
 
# Print matrix elements
def showArray(arr):
 
    for i in range(M):
        for j in range(N):
            print(arr[i][j], end = " ")
             
        print()
 
# Function to Reverse the rows and columns
# of a matrix alternatively.
def reverseAlternate(arr):
     
    turn = 0
 
    while turn < M and turn < N:
        if (turn % 2 == 0):
            start = 0
            end = N - 1
 
            while (start < end):
                temp = arr[turn][start]
                arr[turn][start] = arr[turn][end]
                arr[turn][end] = temp
                start += 1
                end -= 1
 
            turn += 1
 
        if (turn % 2 == 1):
            start = 0
            end = M - 1
 
            while (start < end):
                temp = arr[start][turn]
                arr[start][turn] = arr[end][turn]
                arr[end][turn] = temp
                start += 1
                end -= 1
 
            turn += 1
 
# Driver code
matrix = [ [ 3, 4, 1, 8 ],
           [ 11, 23, 43, 21 ],
           [ 12, 17, 65, 91 ],
           [ 71, 56, 34, 24 ] ]
            
reverseAlternate(matrix)
showArray(matrix)
 
# This code is contributed by Potta Lokesh

C#

// C# program to find Reverse the
// rows and columns of a matrix alternatively.
using System;
class GFG {
  const int N = 4;
  const int M = 4;
 
  // Print matrix elements
  static void showArray(int[, ] arr)
  {
    for (int i = 0; i < M; i++) {
      for (int j = 0; j < N; j++)
        Console.Write(arr[i, j] + " ");
      Console.WriteLine();
    }
  }
 
  // Function to Reverse the rows and columns
  // of a matrix alternatively.
  static void reverseAlternate(int[, ] arr)
  {
    int turn = 0;
 
    while (turn < M && turn < N) {
      if (turn % 2 == 0) {
        int start = 0, end = N - 1, temp;
        while (start < end) {
          temp = arr[turn, start];
          arr[turn, start] = arr[turn, end];
          arr[turn, end] = temp;
          start += 1;
          end -= 1;
        }
        turn += 1;
      }
 
      if (turn % 2 == 1) {
        int start = 0, end = M - 1, temp;
        while (start < end) {
          temp = arr[start, turn];
          arr[start, turn] = arr[end, turn];
          arr[end, turn] = temp;
          start += 1;
          end -= 1;
        }
        turn += 1;
      }
    }
  }
 
  // Driver code
  public static void Main()
  {
 
    int[, ] matrix = { { 3, 4, 1, 8 },
                      { 11, 23, 43, 21 },
                      { 12, 17, 65, 91 },
                      { 71, 56, 34, 24 } };
    reverseAlternate(matrix);
    showArray(matrix);
  }
}
 
// This code is contributed by ukasp.

Javascript

<script>
    // JavaScript program to find Reverse the
    // rows and columns of a matrix alternatively.
    const N = 4;
    const M = 4;
 
    // Print matrix elements
    const showArray = (arr) => {
        for (let i = 0; i < M; i++) {
            for (let j = 0; j < N; j++)
                document.write(`${arr[i][j]} `);
            document.write("<br/>");
        }
    }
 
    // Function to Reverse the rows and columns
    // of a matrix alternatively.
    const reverseAlternate = (arr) => {
        let turn = 0;
 
        while (turn < M && turn < N) {
            if (turn % 2 == 0) {
                let start = 0, end = N - 1, temp;
                while (start < end) {
                    temp = arr[turn][start];
                    arr[turn][start] = arr[turn][end];
                    arr[turn][end] = temp;
                    start += 1;
                    end -= 1;
                }
                turn += 1;
            }
 
            if (turn % 2 == 1) {
                let start = 0, end = M - 1, temp;
                while (start < end) {
                    temp = arr[start][turn];
                    arr[start][turn] = arr[end][turn];
                    arr[end][turn] = temp;
                    start += 1;
                    end -= 1;
                }
                turn += 1;
            }
        }
    }
 
    // Driver code
    let matrix = [[3, 4, 1, 8],
    [11, 23, 43, 21],
    [12, 17, 65, 91],
    [71, 56, 34, 24]];
    reverseAlternate(matrix);
    showArray(matrix);
 
    // This code is contributed by rakeshsahni
 
</script>
Producción

8 56 4 24 
11 17 43 12 
91 65 23 21 
71 1 34 3 

Complejidad de tiempo : O(M*N)
Complejidad de espacio : O(1), no se utiliza espacio extra adicional.

Publicación traducida automáticamente

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