Dada una array cuadrada 2D, encuentre la suma de los elementos en las diagonales Principal y Secundaria. 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 la Diagonal Principal: La condición fila-columna es fila = columna.
La diagonal secundaria está formada por los elementos A03, A12, A21, A30. - Condición para la diagonal secundaria: la condición fila-columna es fila = número de filas – columna -1.
Ejemplos:
Input : 4 1 2 3 4 4 3 2 1 7 8 9 6 6 5 4 3 Output : Principal Diagonal: 16 Secondary Diagonal: 20 Input : 3 1 1 1 1 1 1 1 1 1 Output : Principal Diagonal: 3 Secondary Diagonal: 3
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 interno verificamos la condición establecida anteriormente:
Implementación:
C++
// A simple C++ program to find sum of diagonals #include <bits/stdc++.h> using namespace std; const int MAX = 100; void printDiagonalSums(int mat[][MAX], int n) { int principal = 0, secondary = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { // Condition for principal diagonal if (i == j) principal += mat[i][j]; // Condition for secondary diagonal if ((i + j) == (n - 1)) secondary += mat[i][j]; } } cout << "Principal Diagonal:" << principal << endl; cout << "Secondary Diagonal:" << secondary << endl; } // Driver code int main() { int a[][MAX] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 1, 2, 3, 4 }, { 5, 6, 7, 8 } }; printDiagonalSums(a, 4); return 0; }
Java
// A simple java program to find // sum of diagonals import java.io.*; public class GFG { static void printDiagonalSums(int [][]mat, int n) { int principal = 0, secondary = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { // Condition for principal // diagonal if (i == j) principal += mat[i][j]; // Condition for secondary // diagonal if ((i + j) == (n - 1)) secondary += mat[i][j]; } } System.out.println("Principal Diagonal:" + principal); System.out.println("Secondary Diagonal:" + secondary); } // Driver code static public void main (String[] args) { int [][]a = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 1, 2, 3, 4 }, { 5, 6, 7, 8 } }; printDiagonalSums(a, 4); } } // This code is contributed by vt_m.
Python3
# A simple Python program to # find sum of diagonals MAX = 100 def printDiagonalSums(mat, n): principal = 0 secondary = 0; for i in range(0, n): for j in range(0, n): # Condition for principal diagonal if (i == j): principal += mat[i][j] # Condition for secondary diagonal if ((i + j) == (n - 1)): secondary += mat[i][j] print("Principal Diagonal:", principal) print("Secondary Diagonal:", secondary) # Driver code a = [[ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ]] printDiagonalSums(a, 4) # This code is contributed # by ihritik
C#
// A simple C# program to find sum // of diagonals using System; public class GFG { static void printDiagonalSums(int [,]mat, int n) { int principal = 0, secondary = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { // Condition for principal // diagonal if (i == j) principal += mat[i,j]; // Condition for secondary // diagonal if ((i + j) == (n - 1)) secondary += mat[i,j]; } } Console.WriteLine("Principal Diagonal:" + principal); Console.WriteLine("Secondary Diagonal:" + secondary); } // Driver code static public void Main () { int [,]a = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 1, 2, 3, 4 }, { 5, 6, 7, 8 } }; printDiagonalSums(a, 4); } } // This code is contributed by vt_m.
PHP
<?php // A simple PHP program to // find sum of diagonals $MAX = 100; function printDiagonalSums($mat, $n) { global $MAX; $principal = 0; $secondary = 0; for ($i = 0; $i < $n; $i++) { for ($j = 0; $j < $n; $j++) { // Condition for // principal diagonal if ($i == $j) $principal += $mat[$i][$j]; // Condition for // secondary diagonal if (($i + $j) == ($n - 1)) $secondary += $mat[$i][$j]; } } echo "Principal Diagonal:" , $principal ,"\n"; echo "Secondary Diagonal:", $secondary ,"\n"; } // Driver code $a = array (array ( 1, 2, 3, 4 ), array ( 5, 6, 7, 8 ), array ( 1, 2, 3, 4 ), array ( 5, 6, 7, 8 )); printDiagonalSums($a, 4); // This code is contributed by ajit ?>
Javascript
<script> // A simple Javascript program to find sum of diagonals const MAX = 100; void printDiagonalSums(mat, n) { let principal = 0, secondary = 0; for (let i = 0; i < n; i++) { for (let j = 0; j < n; j++) { // Condition for principal diagonal if (i == j) principal += mat[i][j]; // Condition for secondary diagonal if ((i + j) == (n - 1)) secondary += mat[i][j]; } } document.write("Principal Diagonal:" + principal + "<br>"); document.write("Secondary Diagonal:" + secondary + "<br>"); } // Driver code let a = [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ] ]; printDiagonalSums(a, 4); // This code is contributed by subhammahato348. </script>
Principal Diagonal:18 Secondary Diagonal:18
Complejidad de tiempo : O(N*N) , ya que estamos usando bucles anidados para atravesar N*N veces.
Espacio auxiliar : O(1), ya que no estamos utilizando ningún espacio adicional.
Método 2 (enfoque eficiente): en este método usamos un bucle, es decir, un bucle para calcular la suma de las diagonales principal y secundaria:
Implementación:
C++
// An efficient C++ program to find sum of diagonals #include <bits/stdc++.h> using namespace std; const int MAX = 100; void printDiagonalSums(int mat[][MAX], int n) { int principal = 0, secondary = 0; for (int i = 0; i < n; i++) { principal += mat[i][i]; secondary += mat[i][n - i - 1]; } cout << "Principal Diagonal:" << principal << endl; cout << "Secondary Diagonal:" << secondary << endl; } // Driver code int main() { int a[][MAX] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 1, 2, 3, 4 }, { 5, 6, 7, 8 } }; printDiagonalSums(a, 4); return 0; }
Java
// An efficient java program to find // sum of diagonals import java.io.*; public class GFG { static void printDiagonalSums(int [][]mat, int n) { int principal = 0, secondary = 0; for (int i = 0; i < n; i++) { principal += mat[i][i]; secondary += mat[i][n - i - 1]; } System.out.println("Principal Diagonal:" + principal); System.out.println("Secondary Diagonal:" + secondary); } // Driver code static public void main (String[] args) { int [][]a = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 1, 2, 3, 4 }, { 5, 6, 7, 8 } }; printDiagonalSums(a, 4); } } // This code is contributed by vt_m.
Python3
# A simple Python3 program to find # sum of diagonals MAX = 100 def printDiagonalSums(mat, n): principal = 0 secondary = 0 for i in range(0, n): principal += mat[i][i] secondary += mat[i][n - i - 1] print("Principal Diagonal:", principal) print("Secondary Diagonal:", secondary) # Driver code a = [[ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ]] printDiagonalSums(a, 4) # This code is contributed # by ihritik
C#
// An efficient C#program to find // sum of diagonals using System; public class GFG { static void printDiagonalSums(int [,]mat, int n) { int principal = 0, secondary = 0; for (int i = 0; i < n; i++) { principal += mat[i,i]; secondary += mat[i,n - i - 1]; } Console.WriteLine("Principal Diagonal:" + principal); Console.WriteLine("Secondary Diagonal:" + secondary); } // Driver code static public void Main () { int [,]a = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 1, 2, 3, 4 }, { 5, 6, 7, 8 } }; printDiagonalSums(a, 4); } } // This code is contributed by vt_m.
PHP
<?php // An efficient PHP program // to find sum of diagonals $MAX = 100; function printDiagonalSums($mat, $n) { global $MAX; $principal = 0; $secondary = 0; for ($i = 0; $i < $n; $i++) { $principal += $mat[$i][$i]; $secondary += $mat[$i][$n - $i - 1]; } echo "Principal Diagonal:" , $principal ,"\n"; echo "Secondary Diagonal:" , $secondary ,"\n"; } // Driver Code $a = array(array(1, 2, 3, 4), array(5, 6, 7, 8), array(1, 2, 3, 4), array(5, 6, 7, 8)); printDiagonalSums($a, 4); // This code is contributed by aj_36 ?>
Javascript
<script> // An efficient Javascript program to find // sum of diagonals function printDiagonalSums(mat,n) { let principal = 0, secondary = 0; for (let i = 0; i < n; i++) { principal += mat[i][i]; secondary += mat[i][n - i - 1]; } document.write("Principal Diagonal:" + principal+"<br>"); document.write("Secondary Diagonal:" + secondary); } // Driver code let a = [[ 1, 2, 3, 4 ], [5, 6, 7, 8 ], [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ]]; printDiagonalSums(a, 4); // This code is contributed Bobby </script>
Principal Diagonal:18 Secondary Diagonal:18
Complejidad de tiempo: O (N), ya que estamos usando un bucle para atravesar N veces.
Espacio auxiliar: O(1) , ya que no estamos utilizando ningún espacio adicional.
Este artículo es una contribución de Mohak Agrawal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
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