Dada una array mat[][] de tamaño N*N, la tarea es rotar la array 45 grados e imprimir la array.
Ejemplos:
Entrada: N = 6,
mat[][] =Salida:
3
6 4
1 9 5
4 5 8 1
4 7 9 7 5
4 5 8 7 2 9
5 2 9 5 5
7 9 3 3
2 5 5
9 6
8Entrada: N = 4,
mat[][] =Salida:
2
9 5
5 1 7
6 8 4 2
4 2 3
6 3
3
Enfoque: Siga los pasos que se indican a continuación para resolver el problema:
- Almacene los elementos diagonales en una lista usando una variable de contador.
- Imprima la cantidad de espacios necesarios para que la salida se vea como el patrón deseado.
- Imprime los elementos de la lista después de invertir la lista .
- Atraviese únicamente elementos diagonales para optimizar el tiempo de la operación.
A continuación se muestra la implementación del enfoque anterior:
Python3
# Python3 program for the above approach # Function to rotate matrix by 45 degree def matrix(n, m, li): # Counter Variable ctr = 0 while(ctr < 2 * n-1): print(" "*abs(n-ctr-1), end ="") lst = [] # Iterate [0, m] for i in range(m): # Iterate [0, n] for j in range(n): # Diagonal Elements # Condition if i + j == ctr: # Appending the # Diagonal Elements lst.append(li[i][j]) # Printing reversed Diagonal # Elements lst.reverse() print(*lst) ctr += 1 # Driver Code # Dimensions of Matrix n = 8 m = n # Given matrix li = [[4, 5, 6, 9, 8, 7, 1, 4], [1, 5, 9, 7, 5, 3, 1, 6], [7, 5, 3, 1, 5, 9, 8, 0], [6, 5, 4, 7, 8, 9, 3, 7], [3, 5, 6, 4, 8, 9, 2, 1], [3, 1, 6, 4, 7, 9, 5, 0], [8, 0, 7, 2, 3, 1, 0, 8], [7, 5, 3, 1, 5, 9, 8, 5]] # Function Call matrix(n, m, li)
4 1 5 7 5 6 6 5 9 9 3 5 3 7 8 3 5 4 1 5 7 8 1 6 7 5 3 1 7 0 6 4 8 9 1 4 5 7 4 8 9 8 6 3 2 7 9 3 0 1 3 9 2 7 5 1 5 1 9 0 0 8 8 5
Complejidad de tiempo: O(N 2 )
Espacio auxiliar: O(N) desde que se usa la lista para el espacio auxiliar
Consulte el artículo completo sobre Rotar la array 45 grados 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