Házi feladat segítségre lenne szükségem?
Sziasztok ez a feladat:
Miképpen kellene ezt megoldani? Próbálom magamtól megírni a kódot úgyhogy nem kész megoldást kérek hanem ötletekre lennék kíváncsi inkább. Nem tudom milyen algoritmust kéne használnom.
Sziasztok, 10-es voltam, reflektálnék a saját válaszomra, mert most már azt is elolvastam, mi volt pontosan a kérdés, illetve a feladat.
"Nem veszi figyelembe azt az esetet, ha a mátrix minden mezőjében 1-es áll, azt hiszem, nem is az a lényeg..." -> nem is kell, a feladat szövege szerint garantáltan van 0 a mátrixban.
A csatolt algoritmus nem számolja bele a maximális számba azt a mezőt, ahol maga a hangszóró van, de eggyet már hozzá tudunk adni.
Mivel nem kész megoldást kértél, ne nézd meg a kódot, inkább segítségképp: Minden mezőre a szomszédos 4 mezőből számold a hangszóró által elérhető mezők számát. Mindezt tedd rekurzívan, és ezáltal észreveheted, hogy tipikusan DP-sal megoldható feladatról van szó.
Már küldött valaki O(n^2) megolást privátban, az kb. 15 sor és nem rekurzív.
De köszi azért.
#10,11 a te megoldásod nem is O(n^2) szerintem nálam 1000x1000-es mátrixra másodpercekig fut.
Az O(n^2) megoldás amit kaptam korábban az ugyanekkora mátrixra lefut 50 ms alatt.
Szia. Örülök, hogy kaptál jobbat. A megoldásom valószínűleg nem optimális, biztosan van attól jobb, de attól még O(n^2) időbonyolultságú. (Ez nem 1 futtatás időszükségletéből mérhető, hanem az időszükségletnek a bemenet méretétől függő változásának tendenciájából.)
Amúgy titkos az a 15 siris algoritmus, vagy esetleg okulhatunk belőle mi is? (Nem is értem, miért privátban kell megoldást nyújtani egy publikus kérdésre egy anonim oldalon.)
#14 nem negyzetes az algoritmusod.
Minden elemen vegig mesz, ez n*n nyilvan, viszont az elemeken nem konstans muveleteket hajtasz vegre.
Ugy latom probaltal valami memoization-feleseget implementalni, (valoszinuleg ezert gondolod, hogy negyzetes a komplexitas), de ettol minden egyes oszlopra meghivod pl. a GetAccessibleCellsOnBottom metodust (ami vegig megy mind az n soron) es minden egyes sorra a GetAccessibleCellsOnRight-ot (ami hasonlokeppen vegig megy n oszlopon).
Összevetettem a két megoldást (a rövidebbet Javaban kaptam azt átírtam C#-ra) és az egyik konkrétan 20x gyorsabb a másiknál (~100 ms vs ~2000 ms) 1000x1000-es mátrixra.
Kíváncsiságból megnéztem 2000x2000-es mátrixxal is és itt már extrém a különbség ~400 ms vs ~22 másodperc.
16-os, jogos amit írsz, abszolút meggyőztél, köszönöm a magyarázatot!
Kérdező, van valami speciális oka, hogy nem osztod meg velünk az algoritmust, amit kaptál?
Szép napot mindenkinek!
"Kérdező, van valami speciális oka, hogy nem osztod meg velünk az algoritmust, amit kaptál?"
Mivel privátban kaptam nem akarom beleegyezés nélkül publikussá tenni. Megkérdezem.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!