De ce contează?
Citești o pagină dintr-o carte: parcurgi primul rând de la stânga la dreapta, treci la rândul următor, și tot așa până jos. Nu sari de pe un rând pe altul la întâmplare. Parcurgerea pe linii a unei matrice e exact acest mod natural de citire.
Ce înseamnă parcurgerea pe linii
A parcurge pe linii înseamnă: iei linia 0 în întregime (toate coloanele), apoi linia 1, și așa mai departe. E ordinea în care citești text.
Tiparul de cod: bucla exterioară pe linii (i), bucla interioară pe coloane (j).
Regula: indicele din bucla exterioară „se mișcă încet”, cel din bucla interioară „se mișcă repede”. La parcurgerea pe linii, coloana j baleiază complet pentru fiecare linie i fixată.
Exemplu: suma fiecărei linii
Fie matricea a (3 linii, 3 coloane):
| L0 | 2 | 5 | 1 |
| L1 | 4 | 0 | 6 |
| L2 | 3 | 3 | 3 |
Pentru fiecare linie resetezi suma și aduni coloanele:
linia 0: 2+5+1 = 8
linia 1: 4+0+6 = 10
linia 2: 3+3+3 = 9Implementare C++
#include <iostream>
using namespace std;
int a[100][100];
int main() {
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> a[i][j];
for (int i = 0; i < n; i++) { // bucla exterioara: linia
int suma = 0; // reset pentru fiecare linie
for (int j = 0; j < m; j++) // bucla interioara: coloanele
suma += a[i][j];
cout << "Suma liniei " << i << " = " << suma << "\n";
}
return 0;
}
// pentru matricea de mai sus: 8, 10, 9Resetarea suma = 0 înainte de bucla interioară e esențială — altfel ai aduna totul într-o singură valoare.
Complexitate
| Operație | Timp | Spațiu |
|---|---|---|
| Parcurgere pe linii | O(n·m) | O(1) suplimentar |
Vizualizare
Urmărește cum bucla exterioară fixează o linie, iar cea interioară baleiază coloanele ei, una după alta:
Greșeli frecvente de concurs:
- Resetezi suma în locul greșit.
suma = 0trebuie pus la începutul fiecărei linii (în bucla pei), nu o singură dată înainte de tot. Altfel obții o sumă cumulată pe toată matricea. - Inversezi buclele. Dacă pui
jexterior șiiinterior, parcurgi de fapt pe coloane, nu pe linii — altă ordine de vizitare. - Limite confundate. Linia merge
0..n-1, coloana0..m-1. Folosirea luinla coloane cândn ≠ miese din matrice. - Afișezi suma în interiorul buclei pe
j. Afișarea trebuie după ce s-a terminat linia, nu la fiecare coloană.
Recapitulare
- Parcurgerea pe linii = bucla exterioară pe
i(linie), interioară pej(coloană) — ordinea de citire a unui text. - Pentru calcule per linie (sumă, maxim), resetezi acumulatorul la începutul fiecărei linii.
- Costul e O(n·m); inversarea buclelor schimbă parcurgerea în „pe coloane”.