Cum funcționează
Toată problema stă în formula simetricului. Față de diagonala principală, simetricul lui
(i, j) este (j, i) — se schimbă indicii între ei. Față de diagonala secundară, formula e
altfel:
simetricul lui (i, j) este (n - 1 - j, n - 1 - i)
Merită verificată pe un caz concret, nu memorată. Pentru n = 5, simetricul lui (0, 0) — colțul
stânga-sus — este (4, 4), colțul dreapta-jos. Corect: diagonala secundară merge din dreapta-sus
spre stânga-jos, iar cele două colțuri rămase sunt într-adevăr simetrice față de ea.
Al doilea lucru important e evitarea dublării. Dacă parcurgi toată matricea, fiecare pereche
apare de două ori: o dată de la (i, j), o dată de la simetricul lui. Condiția i + j < n - 1
păstrează doar jumătatea de deasupra diagonalei secundare, deci fiecare pereche se raportează o
singură dată.
Elementele de pe diagonala secundară (i + j == n - 1) sunt propriii lor simetrici, deci nu
formează perechi — sunt excluse automat de comparația strictă <.
Paritatea se compară direct: a % 2 == b % 2. Nu ai nevoie de patru cazuri („ambele pare sau ambele
impare") — resturile la împărțirea cu 2 sunt egale exact în situațiile alea două.
Greșeli frecvente
- Formula diagonalei principale (
(j, i)) aplicată la cea secundară — cea mai frecventă
greșeală a problemei; rezultatul e plauzibil, deci trece neobservat.
- Parcurgerea întregii matrice fără condiția
i + j < n - 1 — fiecare pereche se afișează de
două ori, în ordine inversată.
<= în loc de < — elementele de pe diagonala secundară se raportează în pereche cu ele
însele.
- Compararea
a % 2 == 0 && b % 2 == 0 fără cazul impar-impar — se pierde jumătate din
răspunsuri.