Dada una array cuadrada 2D, imprima las diagonales Principal y Secundaria.
Ejemplos:
Input: 4 1 2 3 4 4 3 2 1 7 8 9 6 6 5 4 3 Output: Principal Diagonal: 1, 3, 9, 3 Secondary Diagonal: 4, 2, 8, 6 Input: 3 1 1 1 1 1 1 1 1 1 Output: Principal Diagonal: 1, 1, 1 Secondary Diagonal: 1, 1, 1
Por ejemplo, considere la siguiente array de entrada de 4 X 4.
A00 A01 A02 A03 A10 A11 A12 A13 A20 A21 A22 A23 A30 A31 A32 A33
- La diagonal primaria está formada por los elementos A00, A11, A22, A33.
Condición para Diagonal Principal:
The row-column condition is row = column.
- La diagonal secundaria está formada por los elementos A03, A12, A21, A30.
Condición para la diagonal secundaria:
The row-column condition is row = numberOfRows - column -1.
Método 1:
En este método, usamos dos bucles, es decir, un bucle para columnas y un bucle para filas y en el bucle interior verificamos la condición indicada anteriormente.
C++
// C++ Program to print the Diagonals of a Matrix #include <bits/stdc++.h> using namespace std; const int MAX = 100; // Function to print the Principal Diagonal void printPrincipalDiagonal(int mat[][MAX], int n) { cout << "Principal Diagonal: "; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { // Condition for principal diagonal if (i == j) cout << mat[i][j] << ", "; } } cout << endl; } // Function to print the Secondary Diagonal void printSecondaryDiagonal(int mat[][MAX], int n) { cout << "Secondary Diagonal: "; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { // Condition for secondary diagonal if ((i + j) == (n - 1)) cout << mat[i][j] << ", "; } } cout << endl; } // Driver code int main() { int n = 4; int a[][MAX] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 1, 2, 3, 4 }, { 5, 6, 7, 8 } }; printPrincipalDiagonal(a, n); printSecondaryDiagonal(a, n); return 0; }
Java
// Java Program to print the Diagonals of a Matrix class GFG { static int MAX = 100; // Function to print the Principal Diagonal static void printPrincipalDiagonal(int mat[][], int n) { System.out.print("Principal Diagonal: "); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { // Condition for principal diagonal if (i == j) { System.out.print(mat[i][j] + ", "); } } } System.out.println(""); } // Function to print the Secondary Diagonal static void printSecondaryDiagonal(int mat[][], int n) { System.out.print("Secondary Diagonal: "); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { // Condition for secondary diagonal if ((i + j) == (n - 1)) { System.out.print(mat[i][j] + ", "); } } } System.out.println(""); } // Driver code public static void main(String args[]) { int n = 4; int a[][] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 1, 2, 3, 4 }, { 5, 6, 7, 8 } }; printPrincipalDiagonal(a, n); printSecondaryDiagonal(a, n); } } // This code is contributed by Rajput-Ji
Python3
# Python3 Program to print the Diagonals of a Matrix MAX = 100 # Function to print the Principal Diagonal def printPrincipalDiagonal(mat, n): print("Principal Diagonal: ", end = "") for i in range(n): for j in range(n): # Condition for principal diagonal if (i == j): print(mat[i][j], end = ", ") print() # Function to print the Secondary Diagonal def printSecondaryDiagonal(mat, n): print("Secondary Diagonal: ", end = "") for i in range(n): for j in range(n): # Condition for secondary diagonal if ((i + j) == (n - 1)): print(mat[i][j], end = ", ") print() # Driver code n = 4 a = [[ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ]] printPrincipalDiagonal(a, n) printSecondaryDiagonal(a, n) # This code is contributed by Mohit Kumar
C#
// C# Program to print the Diagonals of a Matrix using System; class GFG { static int MAX = 100; // Function to print the Principal Diagonal static void printPrincipalDiagonal(int[, ] mat, int n) { Console.Write("Principal Diagonal: "); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { // Condition for principal diagonal if (i == j) { Console.Write(mat[i, j] + ", "); } } } Console.WriteLine(""); } // Function to print the Secondary Diagonal static void printSecondaryDiagonal(int[, ] mat, int n) { Console.Write("Secondary Diagonal: "); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { // Condition for secondary diagonal if ((i + j) == (n - 1)) { Console.Write(mat[i, j] + ", "); } } } Console.WriteLine(""); } // Driver code public static void Main(String[] args) { int n = 4; int[, ] a = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 1, 2, 3, 4 }, { 5, 6, 7, 8 } }; printPrincipalDiagonal(a, n); printSecondaryDiagonal(a, n); } } // This code is contributed by 29AjayKumar
Javascript
<script> // Javascript Program to print the Diagonals of a Matrix let MAX = 100; // Function to print the Principal Diagonal function printPrincipalDiagonal(mat, n) { document.write("Principal Diagonal: "); for (let i = 0; i < n; i++) { for (let j = 0; j < n; j++) { // Condition for principal diagonal if (i == j) { document.write(mat[i][j] + ", "); } } } document.write("</br>"); } // Function to print the Secondary Diagonal function printSecondaryDiagonal(mat, n) { document.write("Secondary Diagonal: "); for (let i = 0; i < n; i++) { for (let j = 0; j < n; j++) { // Condition for secondary diagonal if ((i + j) == (n - 1)) { document.write(mat[i][j] + ", "); } } } document.write("</br>"); } let n = 4; let a = [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ] ]; printPrincipalDiagonal(a, n); printSecondaryDiagonal(a, n); </script>
Producción:
Principal Diagonal: 1, 6, 3, 8, Secondary Diagonal: 4, 7, 2, 5,
Análisis de Complejidad:
- Complejidad Temporal: O(n 2 ).
Como hay un bucle anidado involucrado, la complejidad del tiempo se eleva al cuadrado. - Espacio Auxiliar: O(1).
Como no se ocupa espacio extra.
Método 2:
en este método, se puede lograr la misma condición para imprimir los elementos diagonales usando un solo bucle for.
Acercarse:
- Para los elementos de la Diagonal Principal: Ejecute un bucle for a hasta n , donde n es el número de columnas , e imprima array[i][i] donde i es la variable de índice.
- Para los elementos de la diagonal secundaria: Ejecute un ciclo hasta n , donde n es el número de columnas e imprima array[i][k] donde i es la variable de índice y k = array_length – 1 . Disminuir k hasta i < n .
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ Program to print the Diagonals of a Matrix #include <bits/stdc++.h> using namespace std; const int MAX = 100; // Function to print the Principal Diagonal void printPrincipalDiagonal(int mat[][MAX], int n) { cout << "Principal Diagonal: "; for (int i = 0; i < n; i++) { // Printing principal diagonal cout << mat[i][i] << ", "; } cout << endl; } // Function to print the Secondary Diagonal void printSecondaryDiagonal(int mat[][MAX], int n) { cout << "Secondary Diagonal: "; int k = n - 1; for (int i = 0; i < n; i++) { // Printing secondary diagonal cout << mat[i][k--] << ", "; } cout << endl; } // Driver code int main() { int n = 4; int a[][MAX] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 1, 2, 3, 4 }, { 5, 6, 7, 8 } }; printPrincipalDiagonal(a, n); printSecondaryDiagonal(a, n); return 0; } // This code is contributed by yashbeersingh42
Java
// Java Program to print the // Diagonals of a Matrix class Main{ static int MAX = 100; // Function to print the Principal Diagonal public static void printPrincipalDiagonal(int mat[][], int n) { System.out.print("Principal Diagonal: "); for (int i = 0; i < n; i++) { // Printing principal diagonal System.out.print(mat[i][i] + ", "); } System.out.println(); } // Function to print the Secondary Diagonal public static void printSecondaryDiagonal(int mat[][], int n) { System.out.print("Secondary Diagonal: "); int k = n - 1; for (int i = 0; i < n; i++) { // Printing secondary diagonal System.out.print(mat[i][k--] + ", "); } System.out.println(); } public static void main(String[] args) { int n = 4; int a[][] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {1, 2, 3, 4}, {5, 6, 7, 8}}; printPrincipalDiagonal(a, n); printSecondaryDiagonal(a, n); } } // This code is contributed by divyeshrabadiya07
Python3
# Python3 program to print the # Diagonals of a Matrix MAX = 100 # Function to print the Principal Diagonal def printPrincipalDiagonal(mat, n): print("Principal Diagonal: ", end = "") for i in range(n): # Printing principal diagonal print(mat[i][i], end = ", ") print() # Function to print the Secondary Diagonal def printSecondaryDiagonal(mat, n): print("Secondary Diagonal: ", end = "") k = n - 1 for i in range(n): # Printing secondary diagonal print(mat[i][k], end = ", ") k -= 1 print() # Driver Code n = 4 a = [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ] ] printPrincipalDiagonal(a, n) printSecondaryDiagonal(a, n) # This code is contributed by divyesh072019
C#
// C# program for the // above approach using System; class GFG{ // Function to print the // Principal Diagonal static void printPrincipalDiagonal(int [,]mat, int n) { Console.Write("Principal Diagonal: "); for (int i = 0; i < n; i++) { // Printing principal diagonal Console.Write(mat[i, i] + ", "); } Console.Write("\n"); } // Function to print the // Secondary Diagonal static void printSecondaryDiagonal(int [,]mat, int n) { Console.Write("Secondary Diagonal: "); int k = n - 1; for (int i = 0; i < n; i++) { // Printing secondary diagonal Console.Write(mat[i, k--] + ", "); } Console.Write("\n"); } // Driver code static void Main() { int n = 4; int [,]a = {{1, 2, 3, 4}, {5, 6, 7, 8}, {1, 2, 3, 4}, {5, 6, 7, 8}}; printPrincipalDiagonal(a, n); printSecondaryDiagonal(a, n); } } // This code is contributed by rutvik_56
Javascript
<script> // Javascript Program to print the // Diagonals of a Matrix let MAX = 100; // Function to print the Principal Diagonal function printPrincipalDiagonal(mat, n) { document.write("Principal Diagonal: "); for (let i = 0; i < n; i++) { // Printing principal diagonal document.write(mat[i][i] + ", "); } document.write("</br>"); } // Function to print the Secondary Diagonal function printSecondaryDiagonal(mat, n) { document.write("Secondary Diagonal: "); let k = n - 1; for (let i = 0; i < n; i++) { // Printing secondary diagonal document.write(mat[i][k--] + ", "); } document.write("</br>"); } let n = 4; let a = [[1, 2, 3, 4], [5, 6, 7, 8], [1, 2, 3, 4], [5, 6, 7, 8]]; printPrincipalDiagonal(a, n); printSecondaryDiagonal(a, n); </script>
Producción:
Principal Diagonal: 1, 6, 3, 8, Secondary Diagonal: 4, 7, 2, 5,
Análisis de Complejidad:
- Complejidad temporal: O(n).
Como solo hay un bucle involucrado, la complejidad del tiempo es lineal. - Espacio Auxiliar: O(1).
Como no se ocupa espacio extra.
Publicación traducida automáticamente
Artículo escrito por sunilkannur98 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA