Programa Java para Calcular la Suma de las Diagonales de una Array

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);
       
    }
}
Producción

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);
    }
}
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *