Kezdőoldal » Számítástechnika » Programozás » Feladatmegoldas hogyan?

Feladatmegoldas hogyan?

Figyelt kérdés

Kapok egy string tömböt (angol abc kisbetűiből) és ki kell írni maximum hány darab olyan stringet tudok kiválasztani ahol a kiválasztott stringek ilyen sorozatba állíthatóak (tetszőleges sorrendben):

s1 = "alapstring"

s2 = s1 + 'egy karakter'

s3 = s2 + 'egy karakter'

s4 = s3 + 'egy karakter'

...


Pl. ezt a tömböt kapom:

["asdx", "c", "xyz", "asd", "xy" "asdxp"]

Itt 3 a megoldás mert a következő stringeket választhatom ki:

"asd", "asdx", "asdxp" - ahol adott string mindig az előző string + 1 karakter

Az "xy", "xyz" is megfelel a szabálynak, de ez csak 2 elemű, az előző pedig 3 és a maximumra vagyunk kíváncsiak.


A következő megoldás jutott eszembe:

Mivel az angol abc kisbetűi fordulhatnak csak elő, ezért 26 karakterről van szó. Megyek végig a stringeken, adott stringhez hozzá fűzöm mind a 26 karaktert egyesével és megnézem, hogy a kapott string szerepel-e a tömbben. Ha igen, akkor megcsinálom ugyanezt a kapott stringen és így tovább.

Mi lehet ennél jobb megoldás?



2021. ápr. 26. 16:45
1 2
 1/14 anonim ***** válasza:
95%
Középiskola vagy egyetem?
2021. ápr. 26. 17:04
Hasznos számodra ez a válasz?
 2/14 A kérdező kommentje:
Egyetem mérnökinfó.
2021. ápr. 26. 17:28
 3/14 anonim ***** válasza:
0%

Inkább visszalépéses keresést alkalmaznék... [link]

Ha csinálsz egy függvényt, ami megnézi, hogy a két sztring paraméter közül az egyik eggyel hosszabb a másiknál, és az átfedő karakterek megegyeznek, akkor a program kb. negyede meg is van. Ez a függvény lesz az elutasítási kritérium (ha nem lapolnak át, akkor ezt az ágat nem érdemes bejárni), az elfogadási kritérium pedig az, hogy az aktuális, jó megoldás hosszabb, mint az eddigi legjobb lánc.

2021. ápr. 26. 17:58
Hasznos számodra ez a válasz?
 4/14 anonim ***** válasza:
70%

Ez sima trie mintapélda.

Felépíted a trie-t és visszaadod a leghosszabb utat.

2021. ápr. 26. 18:22
Hasznos számodra ez a válasz?
 5/14 A kérdező kommentje:
Nem tanultunk még triet. De ha nincs más utána nézek, köszi.
2021. ápr. 26. 19:04
 6/14 anonim ***** válasza:
Milyen nyelv?
2021. ápr. 26. 19:20
Hasznos számodra ez a válasz?
 7/14 anonim ***** válasza:

Jó felé gondolkozol, csak ezt az elgondolásodat optimalizáld egy kissé.

Mindig az alapstringet keresném és az azt követő karaktert elég vizsgálni, meg az utána és az után következőt, amíg a next char <> nem lesz ABC-nél.

Tehát, ha whitespace, vagy pont, vagy egyéb, nem alfabetikus írásjel, addig. És persze az addig vizsgáltak mind mennek a megfelel halmazba.

2021. ápr. 26. 19:36
Hasznos számodra ez a válasz?
 8/14 A kérdező kommentje:
6-os C++-ban írom de mindegy végülis, megértek más nyelveket is.
2021. ápr. 26. 19:39
 9/14 anonim ***** válasza:
52%

Egyszerű O(nlogn+ns) megoldás:

[link]

2021. ápr. 26. 20:09
Hasznos számodra ez a válasz?
 10/14 A kérdező kommentje:
Köszönöm, én túlbonyolítottam.
2021. ápr. 26. 21:09
1 2

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!