Documente Academic
Documente Profesional
Documente Cultură
Implementarea poate fi fcut recursiv sau cu ajutorul unei cozi. Este de preferat s folosim
o coad, deoarece pentru N i M cu valori mari, un FILL recursiv poate dep i limita de
memorie a stivei (ceea ce nseamn 0 puncte pe testele mari).
Fie coadax i coaday dou cozi n care vom memora liniile, respectiv coloanele. Dac pornim
din punctul x0, y0 i vrem s vedem dac putem ajunge n xf, yf, atunci vom proceda n
felul urmator:
1. Introducem x0 n coadax i y0 n coaday.
2. Parcurgem coada pn cnd aceasta devine vid.
3. La fiecare pas adugm n coad noile coordonate n care e posibil deplasarea
(pentru o pereche de coordonate x i y, verificm dac M[x][y-1], M[x][y+1],
M[x-1][y] i M[x+1][y] sunt egale cu 0 i nu au fost deja adugate n coad,
pentru c altfel programul ar rula la infinit) i scoatem din coad elementul curent.
4. Verificm dac n urma executrii algoritmului FILL poziia (xf, yf) a fost vizitat.