Informatică, întrebare adresată de Juju93, 8 ani în urmă

Se dă o matrice m cu n linii și n coloane. Să se afișeze suma maximă a elementelor situate pe o paralelă la diagonala principală sau secundară.

Date de intrare
De pe prima linie se citește numărul n. De pe următoarele n linii se citesc n numere întregi, reprezentând elementele matricei.

Date de ieșire
Programul va afișa pe ecran suma cerută.

Restricții și precizări
1 ≤ n ≤ 50
-100 ≤ m[i][j] ≤ 100
Diagonalele principale și secundare se consideră și ele paralele
Exemplu
Date de intrare Date de ieșire
4
1 2 30 4
5 6 7 8
9 10 11 12
13 14 15 16 45
Explicație
Suma maximă se obține pentru prima paralelă de deasupra diagonalei secundare.
Limbaj C++

Răspunsuri la întrebare

Răspuns de axel0
0

#include <iostream>

using namespace std;

int main() {

   int n;

   cin >> n;

   int mat[n][n];

   int max_sum = 0;

   int current_sum = 0;

   for (int i = 0; i < n; i++) {

       for (int j = 0; j < n; j++) {

           cin >> mat[i][j];

       }

   }

   for (int i = 0; i < n; i++) {

       for (int j = 0; j < n; j++) {

           if (i == j || i + j == n - 1) {

               current_sum += mat[i][j];

           }

       }

       max_sum = max(max_sum, current_sum);

       current_sum = 0;

   }

   cout << max_sum << endl;

   return 0;

}


Juju93: Salut si multumesc de ajutor, dar nu imi da raspunsul corect. Raspunsul corect e 45 si mie imi da 29.
axel0: schimba:
if (i == j || i + j == n - 1) {
current_sum += mat[i][j];
}

cu
if (i == j || i + j == n - 1 || i + j == n - 1) {
current_sum += mat[i][j];
}
Juju93: Acum rezultatul e 0
Juju93: Scuze nu 0 e rezultatul..e tot 29
Alte întrebări interesante