Sunteți pe pagina 1din 4

Probleme – Tablouri unidimensionale, bidimensionale

Tablouri unidimensionale

1. Se dă o matrice cu n linii şi n coloane şi elemente numere naturale. Să se afişeze elementele


prin parcurgerea şerpuită a matricei, începând cu elementul de pe prima linie şi prima
coloană, ca în exemplu.
n=4
1 3 4 10
2 5 9 11
6 8 12 15
7 13 14 16
Se afişează 1 2 3 4 5 6 7 8 9 10 11 12
13 14 15 16.

2. Triunghiul lui Pascal este un aranjament geometric al coeficienților binomiali. Înălțimea şi


laturile triunghiului conțin cifra 1, iar fiecare număr de pe o linie n reprezintă suma celor
două numere de pe linia superioară n-1. Vezi exemplul de mai jos:
Să se scrie un
program care
citeşte un număr
natural n şi afişează
pe ecran triunghiul
lui Pascal cu n linii.

3. Se dă o matrice A cu m x n elemente întregi. Să se scrie un program care determină şi


tipăreşte scara de suma maximă. Coborârea pe scară se poate face de pe o linie pe
următoarea doar la elemente vecine.

4. Se dă o matrice A cu m x n elemente întregi. Să se scrie un program care determină şi


tipăreşte urcarea de suma minimă. Urcarea se poate face de pe o linie pe precedenta doar la
elemente vecine.

5. Se consideră o matrice de m linii şi n coloane, completată cu valori 1 şi 0. Se cere


determinarea locurilor valorilor 1 care au 8 vecini numărul 1. De 5 6
exemplu, pentru conținutul fişierului matr.in din tabelul alăturat 1 0 1 1 1 1
vor fi indicate elementele de coordonate: (2,4), (2,5), (3,3), (4,2), 0 1 1 1 1 1
(4,3). 1 1 1 1 1 1
1 1 1 1 0 1
1 1 1 1 1 1
6. Peștera. O peşteră are n încăperi numerotate de la 1 la n. Între anumite încăperi s-au
amenajat anumite coridoare de acces, altele au rămas izolate. Administratorul complexului
turistic căruia i s-a dat în grijă peştera ar vrea să ştie răspunsul la următoarele întrebări:
a) Care sunt încăperile în care intră cele mai multe coridoare?
b) Care sunt încăperile unde peştera se înfundă?
c) Care sunt încăperile izolate?

Prima linie a fişierului pestera.in contine un număr natural nenul n, apoi pe următoarele n
linii n*n cifre de 0 şi 1. Valorile de 0 şi 1 au următoarea semnificație, a i,j=1 atunci când există
cale de acces amenajată, ai,j=0 atunci când nu există cale de acces amenajată. Să se scrie un
program care scrie în fişierul pestera.out pe prima linie numerele de ordine ale coridoarelor
în care intră sau din care ies un număr maxim de coridoare, pe a doua linie a fişierului se
scriu numerele de ordine ale încăperilor care se înfundă(în cazul în care nu există astfel de
încăperi se afişează mesajul nu există), iar pe a treia linie a fişierului se vor scrie numerele de
ordine ale încăperilor izolate (în cazul în care nu există astfel de încăperi se afişează mesajul
nu există).

Exemplu: Iar pentru următorul exemplu


5 5

0 0 1 0 0 0 1 1 0 0
0 0 0 0 0 1 0 0 0 0
1 0 0 0 1 1 0 0 0 1
0 0 0 0 1 0 0 0 0 1
0 0 1 1 0 0 0 1 1 0
Se afişează Se afişează
a) 3 5 a) 1 3 5
b) 1 4 b) 2 4
c) 2 c) Nu există

7. Se consideră un teren accidentat pe care geodezii l-au schițat pe o


4 5
hartă a altitudinilor de forma unui tablou bidimensional. Fiecare 1 3 4 5 6
element al tabloului este un număr întreg şi reprezintă altitudinea 2 6
suprafeței de teren la care se referă acel element. Cineva aruncă o 1 5 3 3 7
2 2 4 7 3
bilă pe acest teren, care cade în locul de coordonate (i, j). Să se 2
determine dacă bila rămâne pe locul în care a căzut sau se va 8 3 4 3 7
rostogoli în altă parte. Datele sunt citite dintr-un fişier text 9 2 5
teren.in, în care, pe prima linie sunt dimensiunile terenului în număr de elemente, m linii şi n
coloane, iar următoarele m linii conțin fiecare, cele n elemente ale liniei. Un exemplu de
conținut al fişierului teren.in este dat în tabelul de mai jos. Dacă presupunem că bila se află la
coordonatele (1,1), atunci ea se va rostogoli din această poziție în locul (1,0).

8. La o sesiune ştiințifică participă n persoane, numerotate de la 1 la n. Unele persoane cunosc


alte persoane din sală, altele nu. Calculatorul care monitorizează reuniunea trebuie să
comunice în final care este cea mai cunoscută persoană (adică este cunoscută de către cele
mai multe persoane din sală). Pentru aceasta se introduc ca date în program perechi de
forma (i,j) care semnifică faptul că persoana i cunoaşte persoana j (nu şi invers). Utilizând un
tablou pătratic de mărime n, cu elemente din mulțimea {0,1}, să se afişeze numărul
persoanei căutate.
9. Un teren este dat sub forma unui tablou A cu n linii şi m coloane. Elementul A[i,j] reține
altitudinea pătrățelului de coordonate i şi j. Să se afişeze coordonatele "pătrățelelor vârf" (un
pătrățel este vârf dacă toți vecinii săi au o altitudine strict mai mică).

10. Plasarea nebunului pe o tablă de șah. Se consideră o tablă de şah cu n linii şi m coloane, pe
care sunt plasate pioni. Pionii sunt codificați prin valoarea 1. Nebunul 1 1 0 0
(ținând cont de direcțiile de deplasare ale acestuia pe tabla de şah) 0 1 0 1
trebuie plasat într-un punct al tablei de şah(notat cu 0) astfel încât să 1 0 1 0
atace câți mai mulți pioni. Să se scrie un program care determină linia şi 1 0 0 0
coloana pe care se va afişa nebunul şi numărul de pioni de pe direcțiile 1 0 1 0
atacate.
Exemplu: n=5, m=4 şi tabloul alăturat, se va afişa 4 2 5 (linia 4, coloana 2, 5 pioni).

11. Săritura calului. Fie o tablă de şah cu n linii şi n coloane şi un cal. Calul este plasat la
coordonatele x şi y, citite de la tastatură. Să se scrie un program 1 16 11 20 3
care citeşte din fişierul cal.in o valoare naturală n şi n*n 10 21 2 17 12
elemente ale unei matrice a şi afişează pe ecran toate 15 24 19 4 7
coordonatele elementelor tablei pe care poate sări calul. Exemplu, 22 9 6 13 18
pentru n=5, matricea alăturată, x=3 şi y=3 se vor afişa coordonatele: (2, 25 14 23 8 5
5), (4,5), (5, 4), (5, 2), (4, 1), (2, 1), (1, 2), (1, 4).

12. Maria are o orgă de lumini de formă dreptunghiulară cu n linii şi m coloane de beculețe.
Funcționarea orgii este automată, automodificându-se o dată la o secundă simultan toate
becurile, după următoarea regulă: dacă un bec are un număr par de becuri vecine aprinse (în
stânga, dreapta, sus şi jos) atunci îşi schimbă starea (dacă este aprins se stinge, iar dacă este
stins se aprinde), însă dacă are un număr impar de becuri vecine aprinse îşi păstrează starea.
Știind configurația inițială a orgii determinați cum va arăta orga după k secunde?

a) Știind configurația inițială a orgii completați tabelele de mai jos


cu starea fiecărui bec după câte o secundă.
1 0 0 1
1 1 0 0
0 1 1 1
0 0 0 0
b) Scrieți un program
care citeşte din fişierul orga.in, de pe prima linie, numerele n, m şi k cu semnificația
precizată în enunț, apoi de pe următoarele n linii, fiecare având m beculețe, starea
acestora (1-becul este aprins, 0-becul este stins).

Exemplu:

orga.in
4 4 3 0 1 0 0
1 0 0 1 1 1 1 1
1 1 0 0 după 3 secunde se obține matricea 0 0 1 1
0 1 1 1 1 1 1 1
0 0 0 0
13. Algoritmul lui Lee. Pe o tablă dreptunghiulară cu n linii şi m coloane, există zone libere
marcate cu 0 şi zone cu obstacole, marcate cu 1. Știind că pe tablă se află un şoricel la poziția
xi, yi, şi o bucată de brânză la poziția xf, yf, să se găsească şi să se afişeze distanța minima pe
care trebuie să o străbată şoricelul până la brânză. Acesta se poate mişca pe tablă pe direcția
nord, est, sud sau vest a poziției curente, unde nu se află un obstacol. Din fişierul mouse.in se
vor citi, în ordine, numerele n, m xi, yi, xf, yf, iar de pe următoarele n linii, codificarea tablei.
Exemplu Mouse.in
4 6 3 1 1 6
0 0 0 0 0 0
0 0 1 1 0 0
0 0 1 1 0 0
0 1 0 0 0 0
Se va afişa 8.

14. În profesia sa de hoț, Ionel a întâlnit o nouă provocare: la un nou “loc de muncă”, în locul
seifului clasic, a întâlnit un afişaj în formă pătrată conținând diverse cifre dispuse orizontal şi
vertical, în număr egal pe linii şi coloane şi o tastatură pentru introducerea parolei care
deschide seiful. Pentru a forma această parolă se împarte afişajul în 4 cadrane, apoi se preiau
cifrele situate pe diagonalele acestor cadrane, la parcurgerea lor în sensul invers arcelor de
ceas, ca în imaginea alăturată. Parola se obține rotind imaginar la stânga cu un număr
precizat k de poziții, şirul cifrelor determinat anterior. Cunoscând numărul natural n, apoi
cifrele inscripționate pe tastele de pe cele n linii şi n coloane, se cere să se afişeze şirul de
taste ce formează parola ce deschide seiful. Parola va conține şirul de cifre pornind de la
poziția de start, după rotirea acestora la stânga cu k poziții. Fişierul seif.in conține pe prima
linie două numere separate prin spațiu: numarul natural n, reprezentând numărul de linii şi
coloane ale afişajului şi numărul natural k reprezentând numărul de rotiri la stânga ale şirului
de cifre selectate pentru a obține parola seifului. Pe următoarele n linii se găsesc scrise câte n
cifre separate prin câte un spațiu, reprezentând afişajul. Fişierul seif.out va conține pe o
singură linie despărțite printr-un spațiu, şirul de cifre ce formează parola seifului.
Restricții(3 < n ≤ 100, n număr par, 0 < k < 1000).
Exemplu:
seif.in seif.out

6 3 963494814383
1 2 3 4 5 6
7 8 9 0 1 2 1 2 3 4 5 6
3 4 5 6 7 8 7 8 9 0 1 2
9 0 1 2 3 4 3 4 5 6 7 8
5 6 7 8 9 0 9 0 1 2 3 4
1 2 3 4 5 6 5 6 7 8 9 0
15. Fie n un număr natural impar 1 2 3 4 5 6 (n<100). Să
se construiască o matrice pătratică având n Iinii şi n coloane
după modelul din exemplul următor:

1 1 0 2 2
1 1 0 2 2
0 0 0 0 0
3 3 0 4 4
3 3 0 4 4

S-ar putea să vă placă și