Kezdőoldal » Számítástechnika » Programozás » Házi feladat segítségre lenne...

Házi feladat segítségre lenne szükségem?

Figyelt kérdés

Sziasztok ez a feladat:

[link]


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.



2020. okt. 22. 21:00
1 2 3
 11/22 curiousgeorge09 ***** válasza:

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ó.

2020. okt. 28. 12:34
Hasznos számodra ez a válasz?
 12/22 A kérdező kommentje:

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.

2020. okt. 28. 13:23
 13/22 A kérdező kommentje:

#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.

2020. okt. 28. 14:59
 14/22 curiousgeorge09 ***** válasza:

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.)

2020. okt. 28. 16:31
Hasznos számodra ez a válasz?
 15/22 curiousgeorge09 ***** válasza:
Siris = soros
2020. okt. 28. 16:32
Hasznos számodra ez a válasz?
 16/22 anonim ***** válasza:

#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).

2020. okt. 28. 17:02
Hasznos számodra ez a válasz?
 17/22 A kérdező kommentje:

Ö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.

2020. okt. 28. 21:50
 18/22 curiousgeorge09 ***** válasza:

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!

2020. okt. 29. 04:43
Hasznos számodra ez a válasz?
 19/22 A kérdező kommentje:

"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.

2020. okt. 29. 06:16
 20/22 curiousgeorge09 ***** válasza:
Kedves tőled, köszönöm szépen!
2020. okt. 29. 08:04
Hasznos számodra ez a válasz?
1 2 3

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!