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>
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