Dada una array 2D, la tarea es imprimir la array en forma antiespiral:
Ejemplos:
Salida: 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Input : arr[][4] = {1, 2, 3, 4 5, 6, 7, 8 9, 10, 11, 12 13, 14, 15, 16}; Output : 10 11 7 6 5 9 13 14 15 16 12 8 4 3 2 1 Input :arr[][6] = {1, 2, 3, 4, 5, 6 7, 8, 9, 10, 11, 12 13, 14, 15, 16, 17, 18}; Output : 11 10 9 8 7 13 14 15 16 17 18 12 6 5 4 3 2 1
La idea es simple, atravesamos la array en forma de espiral y colocamos todos los elementos atravesados en una pila. Finalmente, uno por uno los elementos de la pila e imprímalos.
Python 3
# Python 3 program to print # matrix in anti-spiral form R = 4 C = 5 def antiSpiralTraversal(m, n, a): k = 0 l = 0 # k - starting row index # m - ending row index # l - starting column index # n - ending column index # i - iterator stk = [] while (k <= m and l <= n): # Print the first row # from the remaining rows for i in range(l, n + 1): stk.append(a[k][i]) k += 1 # Print the last column # from the remaining columns for i in range(k, m + 1): stk.append(a[i][n]) n -= 1 # Print the last row # from the remaining rows if ( k <= m): for i in range(n, l - 1, -1): stk.append(a[m][i]) m -= 1 # Print the first column # from the remaining columns if (l <= n): for i in range(m, k - 1, -1): stk.append(a[i][l]) l += 1 while len(stk) != 0: print(str(stk[-1]), end = " ") stk.pop() # Driver Code mat = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20]]; antiSpiralTraversal(R - 1, C - 1, mat) # This code is contributed # by ChitraNayal
Producción:
12 13 14 9 8 7 6 11 16 17 18 19 20 15 10 5 4 3 2 1
Consulte el artículo completo sobre Array de impresión en forma antiespiral para obtener más detalles.
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