Dada una array de array bidimensional de n filas y n columnas. Imprima esta array en forma de serpiente a partir de la columna n-1 como se muestra en la figura a continuación.
Ejemplos:
Input : mat[][] = 1 2 3 4 5 6 7 8 9 Output: 3 2 1 4 5 6 9 8 7 Input: mat[][] = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Output: 4 3 2 1 5 6 7 8 12 11 10 9 13 14 15 16
Algoritmo:
- Comience a atravesar desde la celda superior derecha que pertenece a la fila 0 y la columna n-1.
- El primer movimiento siempre será un movimiento horizontal hacia la dirección IZQUIERDA (OESTE) .
- Alternativamente, se realizan movimientos horizontales y verticales durante el recorrido de la array.
- En un solo movimiento horizontal, atravesamos varias celdas hasta llegar a cualquiera de las paredes de la array.
- En un movimiento horizontal, si la fila tiene un número impar, nos movemos en la dirección DERECHA (ESTE) , de lo contrario, nos movemos en la dirección IZQUIERDA (OESTE)
- En un solo movimiento vertical, atravesamos una sola celda en dirección HACIA ABAJO .
A continuación se muestra la implementación del algoritmo anterior:
C++
// C++ program for traversing a matrix from column n-1 #include <bits/stdc++.h> using namespace std; // Function used for traversing over the given matrix void traverseMatrix(vector<vector<int> > mat, int n) { for (int i = 0; i < n; i++) { if (i%2 == 1) for (int j = 0; j < n; j++) printf("%d ", mat[i][j]); else for (int j = n - 1; j >= 0; j--) printf("%d ", mat[i][j]); } } // Driver function int main() { // number of rows and columns int n = 5; // 5x5 matrix vector<vector<int> > mat{ { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 }, { 16, 17, 18, 19, 20 }, { 21, 22, 23, 24, 25 } }; traverseMatrix(mat, n); return 0; }
Java
// Java program for traversing a matrix from column n-1 class GFG { // Function used for traversing over the given matrix static void traverseMatrix(int[][] mat, int n) { for (int i = 0; i < n; i++) { if (i % 2 == 1) { for (int j = 0; j < n; j++) { System.out.print( Integer.toString(mat[i][j]) + " "); } } else { for (int j = n - 1; j >= 0; j--) { System.out.print( Integer.toString(mat[i][j]) + " "); } } } } // Driver function public static void main(String[] args) { // number of rows and columns int n = 5; // 5x5 matrix int[][] mat = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 }, { 16, 17, 18, 19, 20 }, { 21, 22, 23, 24, 25 } }; traverseMatrix(mat, n); System.exit(0); } }
Python3
# Python3 program for traversing a matrix from column n-1 import sys; # Function used for traversing over the given matrix def traverseMatrix(mat, n): for i in range(n): if i & 1: for j in range(n): print(str(mat[i][j])+ "", end = " ") else: for j in range(n-1, -1, -1): print(str(mat[i][j])+ "", end = " ") # Driver function if __name__ == '__main__': # number of rows and columns n = 5 # 5x5 matrix mat =[ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25] ] traverseMatrix(mat, n)
C#
// CSHARP program for traversing a matrix from column n-1 using System; using System.Linq; class GFG { // Function used for traversing over the given matrix static void traverseMatrix(int[, ] mat, int n) { for (int i = 0; i < n; i++) { if (i % 2 == 1) { for (int j = 0; j < n; j++) { Console.Write(mat[i, j].ToString() + " "); } } else { for (int j = n - 1; j >= 0; j--) { Console.Write(mat[i, j].ToString() + " "); } } } } // Driver function public static void Main() { // number of rows and columns int n = 5; // 5x5 matrix int[, ] mat = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 }, { 16, 17, 18, 19, 20 }, { 21, 22, 23, 24, 25 } }; traverseMatrix(mat, n); } }
PHP
<?php // PHP program for traversing a matrix from column n-1 # Function used for traversing over the given matrix function traverseMatrix($mat, $n){ for($i = 0; $i < $n; $i++) { if($i & 1) { for($j = 0; $j < $n; $j++) { print($mat[$i][$j]." "); } } else { for($j = $n - 1; $j >= 0; $j--) { print($mat[$i][$j]." "); } } } } // Driver function # number of rows and columns $n = 5; # 5x5 matrix $mat = array( array(1, 2, 3, 4, 5), array(6, 7, 8, 9, 10), array(11, 12, 13, 14, 15), array(16, 17, 18, 19, 20), array(21, 22, 23, 24, 25) ); traverseMatrix($mat, $n); ?>
Javascript
<script> // Javascript program for traversing a matrix from column n-1 // Function used for traversing over the given matrix function traverseMatrix(mat, n) { for (var i = 0; i < n; i++) { if (i % 2 == 1) { for (var j = 0; j < n; j++) { document.write(mat[i][j] + " "); } } else { for (var j = n - 1; j >= 0; j--) { document.write(mat[i][j] + " "); } } } } // number of rows and columns var n = 5; // 5x5 matrix var mat = [ [ 1, 2, 3, 4, 5 ], [ 6, 7, 8, 9, 10 ], [ 11, 12, 13, 14, 15 ], [ 16, 17, 18, 19, 20 ], [ 21, 22, 23, 24, 25 ] ]; traverseMatrix(mat, n); //This code is contributed by shruti456rawal </script>
Producción:
5 4 3 2 1 6 7 8 9 10 15 14 13 12 11 16 17 18 19 20 25 24 23 22 21
Complejidad de tiempo : O(N^2) Complejidad de espacio : O(1)
Publicación traducida automáticamente
Artículo escrito por Harshit Saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA