Hola25
Hola25 Logo
Hola25
Utilizatori disponibili

Înapoi la blog

Rame pătratice de hârtie sunt așezate concentric, sugerând straturile unei matrice.
Ilustrație conceptuală generată cu AI; explicațiile și schemele de învățare sunt în articol.
Informatică

Construirea matricei la BAC: straturi concentrice

Hola25
Hola25
Autor

21 octombrie 2026

7 min citire

În acest articol

Construirea unei matrice după o regulă începe cu identificarea valorii fiecărei celule din indicii ei. Pentru o matrice cu straturi pătratice concentrice, valoarea poate fi determinată din distanța minimă până la cele patru margini. Nu este necesar să scrii separat fiecare contur dacă poți formula această regulă locală.

Lecția despre tablouri bidimensionale se adresează profilului matematică-informatică; verifică programa specializării tale înainte să alegi exercițiile.

Vom construi o matrice pătratică în care marginea exterioară conține unu, stratul următor conține doi și valorile cresc spre centru. Această problemă exersează transformarea unui desen într-o formulă de indici, abilitate utilă în pregătirea pentru BAC la informatică.

Cum arată rezultatul cerut

Pentru dimensiunea cinci, matricea trebuie să fie:

1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1

Toate celulele de pe margine au valoarea unu. După eliminarea imaginară a acestei margini, rămâne un pătrat de dimensiune trei, al cărui contur are valoarea doi. În centru rămâne o singură celulă cu valoarea trei.

Pentru dimensiunea patru, centrul nu este o singură celulă, ci un pătrat de două pe două. Toate cele patru celule centrale au valoarea doi. Nu trebuie forțat un centru unic pentru o dimensiune pară.

Distanțele față de margini

Folosim indici de la zero. Pentru celula de pe linia curentă și coloana curentă, distanța în pași până la marginea de sus este indicele liniei. Distanța până la marginea din stânga este indicele coloanei.

Distanța până la marginea de jos este dimensiunea minus unu minus indicele liniei. Pentru marginea din dreapta, expresia este aceeași folosind indicele coloanei. Toate cele patru distanțe sunt numere naturale pentru o celulă validă.

Margine Distanță pentru indicii de la zero
Sus i
Stânga j
Jos n - 1 - i
Dreapta n - 1 - j

Cea mai mică dintre aceste distanțe arată câte straturi complete de margine se află în exteriorul celulei. Pentru că numerotarea straturilor începe de la unu, adăugăm unu la această distanță minimă.

De ce folosim minimul, nu maximul

O celulă aflată pe marginea de sus are distanța zero față de acea margine, chiar dacă este departe de marginea de jos. Ea trebuie să primească valoarea unu. Minimul distanțelor surprinde contactul cu oricare dintre margini.

Maximul ar descrie marginea cea mai îndepărtată și ar da valori mari chiar pentru celule de pe contur. Suma distanțelor ar avea alt sens și nu ar identifica stratul dorit. Regula se justifică prin cea mai apropiată margine.

Pentru dimensiunea șapte și celula cu indicii doi și patru, distanțele sunt doi, patru, patru și doi. Minimul este doi, deci valoarea este trei. Celula se află pe al treilea strat, numărând de la exterior.

Program C++ complet

Programul citește o dimensiune între unu și o sută și afișează matricea. Calculează fiecare valoare direct din indici, fără să memoreze matricea într-un tablou.

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            int distanta = i;
            if (j < distanta) distanta = j;
            if (n - 1 - i < distanta) distanta = n - 1 - i;
            if (n - 1 - j < distanta) distanta = n - 1 - j;
            if (j > 0) cout << ' ';
            cout << distanta + 1;
        }
        cout << '\n';
    }
    return 0;
}

Variabila distanței este inițializată pentru fiecare celulă, nu o singură dată pentru întreaga matrice. Apoi este comparată cu celelalte trei distanțe. La final, ea reprezintă minimul tuturor celor patru valori.

Spațiul se afișează înaintea fiecărui element, cu excepția primului de pe linie. După completarea unei linii, se afișează trecerea la rând nou. Separarea valorii calculate de formatarea ieșirii face programul mai ușor de verificat.

Verificarea pentru dimensiuni mici

Pentru dimensiunea unu, toate distanțele sunt zero, deci unica valoare este unu. Acest caz verifică dacă formula tratează corect o matrice care este în întregime margine și centru în același timp.

Pentru dimensiunea doi, fiecare celulă se află pe cel puțin o margine. Minimul este mereu zero, deci toate cele patru valori sunt unu. Nu există un strat interior separat.

Pentru dimensiunea trei, doar centrul are toate distanțele cel puțin unu. El primește valoarea doi, iar restul celulelor primesc unu. Aceste exemple sunt suficiente pentru a controla ideea, dar justificarea generală vine din distanțe.

Simetriile oferă verificări suplimentare

Matricea trebuie să fie simetrică față de axa verticală și față de axa orizontală. Oglindirea unei celule schimbă între ele două dintre distanțe, fără să schimbe minimul lor. Prin urmare, valoarea rămâne aceeași.

Și schimbarea indicelui liniei cu cel al coloanei păstrează mulțimea celor patru distanțe. Rezultatul este simetric și față de diagonala principală. Dacă desenul obținut este dezechilibrat, verifică formulele pentru marginea de jos și cea din dreapta.

Aceste proprietăți permit verificarea unui rezultat fără recalcularea fiecărei celule. Ele transformă un tipar vizual într-o explicație, așa cum propune și materialul despre diferența dintre memorare și înțelegere.

Cum adaptezi valorile straturilor

Dacă marginea trebuie să înceapă cu zero, nu mai adaugi unu la distanța minimă. Dacă valorile cresc din doi în doi, poți transforma numărul stratului prin regula cerută. Geometria straturilor rămâne aceeași, dar eticheta numerică a fiecărui strat se schimbă.

Dacă valorile trebuie să scadă spre centru, pornești de la numărul total de straturi și scazi distanța minimă. Numărul straturilor este jumătatea dimensiunii rotunjită în sus. Înainte de cod, verifică separat dimensiunile pare și impare.

Nu modifica formulele distanțelor pentru a schimba doar valorile afișate. Separarea dintre identificarea stratului și atribuirea valorii face adaptările mai clare și reduce riscul unor condiții amestecate.

Alte construcții bazate pe indici

Pentru numerotarea consecutivă pe linii, valoarea unei celule se poate obține din indicele liniei înmulțit cu numărul coloanelor, plus indicele coloanei, plus unu. Pentru un model alternant de tip tablă de șah, contează paritatea sumei indicilor.

Aceste reguli nu trebuie memorate ca formule izolate. În primul caz, numeri câte elemente au fost completate pe liniile anterioare. În al doilea, trecerea la o celulă vecină schimbă paritatea sumei, deci schimbă valoarea alternantă.

La orice construcție, verifică prima celulă, ultima celulă a unei linii, prima celulă a liniei următoare și un caz interior. Aceste puncte descoperă rapid o deplasare cu unu a indicilor.

Timp și memorie

Programul afișează un număr de valori egal cu pătratul dimensiunii. Fiecare valoare cere un număr constant de comparații, deci timpul este pătratic în dimensiune. Acest cost este firesc pentru afișarea întregii matrice.

Memoria suplimentară este constantă, deoarece nu păstrăm toate celulele. Dacă problema ar cere ulterior modificări sau acces repetat la elemente, ai putea memora matricea, dar formula de construcție ar rămâne aceeași.

Exerciții cu răspunsuri

Pentru dimensiunea șase, care este valoarea maximă? Trei. Există trei straturi, iar cele patru celule centrale aparțin stratului interior.

Pentru dimensiunea cinci, ce valoare are celula unu–trei? Distanțele sunt unu, trei, trei și unu. Minimul este unu, deci valoarea este doi.

Ce valori are prima linie pentru orice dimensiune permisă? Numai unu, deoarece distanța până la marginea de sus este zero pentru fiecare celulă de pe acea linie.

Dacă marginea trebuie să fie zece și fiecare strat să crească cu trei, ce valoare are stratul al treilea? Șaisprezece. Transformi numărul stratului prin regula zece plus trei ori numărul straturilor exterioare.

Întrebări frecvente

Trebuie să construiesc fiecare contur separat?

Nu pentru această regulă. Formula locală permite calcularea directă a fiecărei celule. Parcurgerea pe contururi este o altă strategie, dar cere mai multe limite de urmărit.

Cum știu dacă formula este generală?

Explică de ce fiecare celulă primește stratul determinat de marginea cea mai apropiată. Apoi verifică dimensiuni pare, impare și cazul unu, fără să te bazezi doar pe un desen mare.

Ce fac dacă nu recunosc regula dintr-un exemplu?

Notează indicii câtorva celule și compară valorile lor cu distanțele, sumele sau paritățile indicilor. Pentru feedback pe această analiză, poți lucra cu un profesor de informatică.

Surse