De ce contează?
Pe o hartă, fiecare oraș are două coordonate: latitudinea (cât de la nord) și longitudinea (cât de la est). Dacă le inversezi, cauți Brașovul și ajungi în mijlocul oceanului — numerele sunt corecte, doar ordinea e greșită. La matrice e exact la fel: ai două coordonate, linia și coloana, și aproape toate erorile de indici vin din confundarea lor sau din ieșirea în afara hărții. Lecția asta nu îți predă un algoritm nou — îți dă reflexele care îți salvează punctele.
Ideea-cheie
O matrice este o tablă cu linii și coloane. Ca să ajungi la o căsuță scrii două numere: a[i][j] înseamnă linia i, coloana j — în ordinea asta, mereu. Calculatorul nu „vede” tabla; el execută orbește ce-i scrii. Dacă tu crezi că mergi pe coloane dar indicele tău numără liniile, programul nu dă eroare — pur și simplu citește alte căsuțe și răspunsul iese greșit. De-aia erorile de indici sunt cele mai perfide: codul rulează, dar gândește altceva decât tine.
Aproape toate bug-urile de matrice se reduc la o singură întrebare: „indicele ăsta chiar arată spre căsuța la care mă gândesc?” Linia întâi, coloana a doua; valorile valide sunt 0..n-1 pe linii și 0..m-1 pe coloane. Cine ține minte ordinea și marginile a rezolvat 90% din capcane.