Para una array cuadrada 2D dada de tamaño N*N, la tarea es encontrar la suma de los elementos en las diagonales Principal y Secundaria. Por ejemplo, analice la siguiente array de entrada de 4 × 4.
a00 a01 a02 a03
a10 a11 a12 a13
a20 a21 a22 a23
a30 a31 a32 a33
Ejemplo:
Entrada 1: 6 7 3 4
8 9 2 1
1 2 9 6
6 5 7 2
Salida 1: Diagonal principal: 26
Diagonal secundaria: 14
Entrada 2: 2 2 2
1 1 1
3 3 3
Salida 2: Diagonal principal: 6
Diagonal secundaria: 6
Intuición:
1. La diagonal principal está constituida por los elementos a00, a11, a22, a33, y la condición fila-columna para la diagonal principal es: fila = columna
2. Sin embargo, la diagonal secundaria está constituida por los elementos a03, a12, a21, a30, y la condición fila-columna para la diagonal secundaria es: fila + columna = N – 1
Enfoque ingenuo: use dos bucles anidados para iterar sobre la array 2D y verifique la condición anterior para la diagonal principal y la diagonal secundaria.
Java
// Java Program to Find the Sum of Diagonals of a Matrix // Importing input output classes import java.io.*; // Main Class public class GFG { // To calculate Sum of Diagonals static void Sum_of_Diagonals1(int[][] matrix, int N) { // Declaring and initializing two variables to zero // initially for primary and secondary diagonal // count int Pd = 0, Sd = 0; // Two Nested for loops for iteration over a matrix // Outer loop for rows for (int k = 0; k < N; k++) { // Inner loop for columns for (int l = 0; l < N; l++) { // Condition for the principal // diagonal if (k == l) Pd += matrix[k][l]; // Condition for the secondary diagonal if ((k + l) == (N - 1)) Sd += matrix[k][l]; } } // Print and display the sum of primary diagonal System.out.println("Sum of Principal Diagonal:" + Pd); // Print and display the sum of secondary diagonal System.out.println("Sum of Secondary Diagonal:" + Sd); } // Main driver method static public void main(String[] args) { // Input integer array // Custom entries in an array int[][] b = { { 8, 2, 13, 4 }, { 9, 16, 17, 8 }, { 1, 22, 3, 14 }, { 15, 6, 17, 8 } }; // Passing the array as an argument to the // function defined above Sum_of_Diagonals1(b, 4); } }
Sum of Principal Diagonal:35 Sum of Secondary Diagonal:58
Complejidad temporal: O(N 2 )
Espacio auxiliar: O(1)
Enfoque eficiente: la idea de encontrar la suma de los valores de la diagonal principal es iterar a N y usar el valor de array[fila][fila] para la suma de la diagonal principal y encontrar la suma de los valores de la diagonal secundaria es usar el valor de array[fila][N – (fila + 1)] para la suma.
Java
// Java Program to Find the Sum of Diagonals of a Matrix // Importing input output classes import java.io.*; // Main Class public class GFG { // To calculate Sum of Diagonals static void Sum_of_Diagonals(int[][] matrix, int N) { // Declaring and initializing two variables to zero // initially for primary and secondary diagonal // count int Pd = 0, Sd = 0; for(int i=0; i<N; i++) { // Since for primary diagonal sum the value of // row and column are equal Pd += matrix[i][i]; // For secondry diagonal sum values of i'th index // and j'th index sum is equal to n-1 at each // stage of matrix Sd += matrix[i][N-(i+1)]; } // Print and display the sum of primary diagonal System.out.println("Sum of Principal Diagonal:" + Pd); // Print and display the sum of secondary diagonal System.out.println("Sum of Secondary Diagonal:" + Sd); } // Main driver method static public void main(String[] args) { // Input integer array // Custom entries in an array int[][] b = { { 8, 2, 13, 4 }, { 9, 16, 17, 8 }, { 1, 22, 3, 14 }, { 15, 6, 17, 8 } }; // Passing the array as an argument to the // function defined above Sum_of_Diagonals(b, 4); } }
Sum of Principal Diagonal:35 Sum of Secondary Diagonal:58
Complejidad temporal: O(N)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por Kanchan_Ray y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA