Mátrix szigetben kéne nekem segitség? Feladat lent.
"Tehát olyan 1-esket keressünk, amelyeket 0 vagy a mátrix szélei vesznek körben"
Csak így lehetséges mert ha berakok egy vagy több egyest a mátrixba az körül fogják venni mindenképp nullák vagy nullák és a mátrix szélei. Azt akarom ezzel mondani hogy olyan 1 es vagy eggyesek nem létezhetnek a mátrixba amelyekre nem igaz amit fentebb írtam. Ezért nem lessz olyan egyes ami nem felel meg annak a feltételnek amit a kérdésedben írtál. Így a végeredmény mindig egy nullákkal feltöltött tömb lesz. Ez miatt pedig nem érdemes a szigetek vizsgálatával foglalkozni csak végigmész a mátrixon és ahol nem nulla van azt átt írod nullára és kész.
Ez egy FloodFill algoritmus. Rekurzívan végigmész a szomszédos cellákon.
SZIGET (mtx,x,y)
HA (mtx[x,y] == 0) VISSZATÉRÉS
mtx[x,y] = 0
HA (VALAMELYIK SZOMSZÉD ELEM == 1) SZIGET(mtx,SZOMSZÉD_X,SZOMSZÉD_Y)
VÉGE
Dehogynem:
(0,0)-ból indulva floodfill-ezi az 1-eseket 0-ra. Majd (1,0)-ból stb... Ahány 1-est talált annyi sziget van. Mivel az adott mezőn a floodfill eltünteti a 0-kat így ha a következő cellát vizsgálva 1-est találunk az már egy másik sziget.
Kicsit bonyolultan írtam le de remélem érted.
De ehhez nem kell semmilyen rekurzív floodfill algoritmus.
Végigmegy egyesével az egyik sarokból indulva az összes cellán és mindent 0-ra állít. Ennyit kér a feladat.
3 sor kód, 30 másodperc alatt megírható.
"
Az eredmény („szigetek” száma) KIMENET. TXT fájlba kerül.
"
És akkor ezt hol teszi meg?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!