Hogyan kell megoldani az alábbi informatikai feladat megoldásában? Sürgős

Figyelt kérdés
Ha egy karaktersorozatból néhány karakter elhagyásával olyan karaktersorozatot kapunk, amely balról jobbra olvasva ugyanaz, mint jobbról balra olvasva, akkor az utóbbi karaktersorozatot egy az előbbiben rejtőzködő palindromnak nevezzük. Például az ACGTGCA karaktersorozat egy a TAGCGCTGCGA karaktersorozatban rejtőzködő palindrom. Találjátok meg az ACATCACTATCGACGATCAGTACGTAATAG karaktersorozatban rejtőzködő leghosszabb palindromot! Indokoljátok a megoldást!

2014. okt. 18. 09:21
 1/3 anonim ***** válasza:

Én úgy csinálnám, hogy balról jobbra haladva minden betű állapota az lehet, hogy elhagyom-nem hagyom el.


Én írnék egy rekurzív függvényt, ami azt csinálja, hogy az átadott String első betűjét megtartja, a végéről pedig levágja addig a karaktereket, míg nem találja meg ugyanazt a betűt.


Most pl. Az 1. betűt megtartja és az utolsót dobja ki, így az új string A-val kezdődik és A a vége.


A-"CATCACTATCGACGATCAGTACGTAAT"-A

A közepével szintén meg lehet hívni ezt a függvényt.


Ha a közepe elfogyott akkor ért véget a ciklus és van egy rejtett palindromunk.


Így minden rejtett palindromot megtalál. Ami elég lassú lehet.


Ezen picit lehet okosítani azzal, ha mindig eltárolod az aktuális leghosszabb palindromot, és azokat az eseteket már nem vizsgálod, amikor ehhez képest túl sok törlés van.

2014. okt. 18. 09:41
Hasznos számodra ez a válasz?
 2/3 A kérdező kommentje:
Köszönöm, de mivel még csak gyakorolunk, ezért én nem tudom megoldani az alábbi feladatot. Leírnád nekem a feladat menetét illetve a megoldást, köszönöm szépen! :)
2014. okt. 18. 09:53
 3/3 anonim ***** válasza:

Hali, a kérdésed alapján azt hittem tapasztaltabb vagy :)


Akkor hagyjuk a rekurzív függvényt.


Én így oldottam meg a feladatot:

1. felveszek egy tömböt, ami olyan hosszú, mint a karaktersorozat.

Ebbe a tömbbe 0-k és 1-esek fognak kerülni, és azt jelzi, hogy az adott karaktert ki kell-e olvasni az eredetiből.



Pl az eredeti legyen 'ABDA'

Akkor a [0,0,1,1] azt mondja, hogy a 'DA'-t olvasom ki, az [1,1,0,1]-nél meg 'ABA'-t.


Először a tömb minden eleme 1, vagyis minden karaktert ki fogok olvasni.


Felveszek 2 változót, az egyik a leghosszabb palindrom hossza, a másik maga a leghosszabb Palindrome.


Utána van egy ciklus ami az alábbit csinálja:


Létrehozza az új karaktersorozatot az eredetiből a leíró tömb alapján.

Megnézi, hogy amit kapott palindrom-e.

Ha igen, akkor megnézi, hogy hosszabb-e, mint az eddigi leghosszabb, ha igen eltárolja, különben nem.


Veszi a következő leíró tömböt és visszamegy a ciklus elejére.

Ha nem tudja venni a következőt, mert elfogytak a lehetőségek, akkor kilép.



Kiírja az eltárolt leghosszabb palindromot.



Tehát meg kell tudnod vizsgálni, hogy az aktuális karaktersorozat palindrom-e, de ez a részt szerintem meg tudod csinálni egyedül is.

A másik, hogy kell az a lépés, ami egy tömbből létrehozza a következőt.

Én a csupa 1-esből indultam el, és onnan megyek lefelé.

ez felfogható egy 2-es számrendszerbeli számnak. A következő elemet úgy kapom meg, hogy kivonok belőle 1-et.

Ha a szám 0, akkor már nem lehet kivonni 1-et és itt véget ér a ciklus.



Remélem ennyi segítséggel meg tudod oldani a feladatot.

Nekem ez lett a leghosszabb:

ACATACTACGCATCATACA (19)

2014. okt. 19. 12:04
Hasznos számodra ez a válasz?

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!