Kezdőoldal » Számítástechnika » Programozás » Mit ronthatok el az alábbi...

Mit ronthatok el az alábbi feladatnál? (Hackerrank gyakorlás.)

Figyelt kérdés

Magamnak gyakorlok, de nem tudok rájönni a hiba okára. A minta tesztesetekre sikerül.


Feladat:

[link]


Kódom:

[link]


Logika, ami mentén gondolkozni próbálok:

A vector 0. indexen levő string-jének char-jain megyek csak végig, hiszen amelyik betű ebben az elemben nem szerepel, az már nem lehet gemstone. Elegendő csak az elsőt nézni.

A legkülső ciklus az arr[0]-n található char-okon megy végig.


A következő ciklus 1-től indul, a vectort járja be, de csak addig megy, amíg az épp vizsgált arr[arridx] helyen levő stringben megtalálható a betű (nulladik index string épp vizsgált betűje).


A legbelső while egy eldöntés tétele akar lenni. Megmondja, hogy ott-e a betű.


Ha adott betűre nézve a külső while ciklus végigment a tömbön (tehát a has_letter true maradt és az arridx < arr.size() feltétel miatt lépett ki), akkor a számlálót növelem 1-gyel, hiszen ez egy gemstone.



Akár a feladatot értem félre, akár banális (de rikító) hibám van, akár már az irány se jó, kérlek, legyetek kíméletesek hozzám! :)



2020. okt. 25. 13:48
1 2
 1/12 A kérdező kommentje:
Ráadásul 93% succes rate-ű, easy besorolású feladat, az ilyeneket mára meg szoktam enni reggelire. Ez most valamiért kifogott rajtam. :/ :'D
2020. okt. 25. 13:50
 2/12 anonim ***** válasza:
"There may be multiple occurrences of a mineral in a rock." Ha a vektor első elemében ugyanaz az "ásvány" többször is szerepel, akkor a c változó értékét minden egyes előfordulásnál növekszik, pedig csak az első előfordulásnál kellene számolni vele.
2020. okt. 25. 15:11
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:
54%

Nem néztem meg a kódodat, de annyi a kérdés, hogy hány karakter szerepel minden stringben.

Ezt sokféleképpen meg lehet oldani, egy egyszerű O(n) megoldás (ahol n az összes karakterszám) ha mész végig a karaktereken és azt tárolod, hogy adott karaktert melyik lista tartalmazza. Amelyik karakternél a listák száma egyenlő az össz listaszámmal, az gem.

2020. okt. 25. 15:45
Hasznos számodra ez a válasz?
 4/12 anonim ***** válasza:
54%
(string helyett írtam listát valamiért)
2020. okt. 25. 15:57
Hasznos számodra ez a válasz?
 5/12 A kérdező kommentje:

# 2


Majd este otthon ránézek, de itt lesz a kutya elásva. Köszi!

2020. okt. 26. 07:34
 6/12 anonim ***** válasza:
Na sikerult?
2020. okt. 27. 07:54
Hasznos számodra ez a válasz?
 7/12 A kérdező kommentje:

Nem volt időm.


Viszont így jóval nehezebbnek tűnik.


Végig kell gondolni, hogy a tömb első stringjében hogyan szűröm ki az ismétléseket.

Betehetem a karaktereket egy tömbbe vagy vectorba, de az is eléggé műveletigényes önmagában. Asszem n^2, bár sehol se tanították meg ezt normálisan.

2020. okt. 27. 09:01
 8/12 anonim ***** válasza:
Ez egy konnyu feladat, 3-as irt is egy egyszeru O(n) algoritmust.
2020. okt. 27. 09:05
Hasznos számodra ez a válasz?
 9/12 A kérdező kommentje:
Egyrészt az elsőben akkor is ki kell szűrni az ismétlődéseket, másrészt a többiben is, harmadrészt nincs előttem, hogy csináljam ezt.
2020. okt. 27. 09:16
 10/12 A kérdező kommentje:

Ehhez kell egy asszociatív tömb.



Első string mondjuk acdbaaa


Asszociatív tömb kulcsai: abcd

Hogyan építem fel? A C++-ban van asszociatív tömb?



Megyek a tömbön a második stringtől kezdődően.

Ha a-t találok, akkor az a kulcs értékét növelem eggyel, de vigyázni kell, hogy ha már növeltem, ne tegyem meg még egyszer. Ezt hogyan vizsgálom?



Amúgy szívesebben maradnék a saját algoritmusomnál, műveletigény ide vagy oda.


De szerintem elengedem ezt, ma is hatmillió dolgom lesz munka után.

2020. okt. 27. 09:20
1 2

További 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!