FPC Ötletet szeretnék ehhez a feladathoz. Valaki?
Be kell olvasni egy stringet és meg kell találni azokat a karaktereket, amelyek palindrómm alakítják a karaktersort, és ezek száma minimális legyen!
Pl. beolvasom: abc
Kiírom: ba
#1 vagyok
Sőt, párosnál sem kell az utolsó karakter. Bocsi.
#1-es: a feladat hogy MINIMÁLIS megoldást adjunk, és ezt nem garantálod így.
Több megoldás is lehetséges, van például a brute-force, amikor a a szöveg elejét a végére kezded pakolni fordított sorrendben, és mindig megnézed hogy palindrom e az újonan létrehozott szöveg.
A string: abcsdffds
abcsdffds -> palindom? NEM
abcsdffdsa -> palindom? NEM
abcsdffdsba -> palindom? NEM
abcsdffdscba -> palindom? IGEN!
De van egy hatékonyabb, frappánsabb megoldás is.
Az algoritmus leírása helyett inkább bemutatom:
Legyen megint a string: abcsdffds
Most fordítsuk meg a stringet -> sdffdscba
Írjuk egymás alá a kettőt, és kezdjük eltolni az alsót, amíg ...
abcsdffds
sdffdscba
abcsdffds
_sdffdscba
abcsdffds
__sdffdscba
abcsdffds
___sdffdscba
Bammm, itt megállunk. Lehet látni hogy a 4. betűtől kezdve a string megegyezik a megfordított string elejével. Most írjuk ki a megfordított szöveg maradék karakterét a konzolra, és végeztünk: cba
Remélem látszik normálisan az eltolás itt a gyk-n, ha nem akkor másold be mondjuk egy jegyzettömbbe a szöveget és látni fogod.
Rád bízom hogy ezt megírd algoritmikusan.
#1-#2 vagyok
Mondjuk valóban bonyolultabb a feladat annál, mint amit először kigondoltam. Pl. "abab"-nál csak egy "a"-t kell kiírnia. Lehet inkább nem kéne erőltetnem az okoskodást ma már :D
A brute force megoldás az lenne, ha az N-1. karaktertől kezdve egyesével hozzáraknád a soron következőt a szöveg végéhez, majd eldöntenéd, palindróm-e. Ha nem, mész tovább. Ha igen, megállsz. (Biztos van szebb megoldás is.)
Palindróm vizsgálatot meg úgy tudsz csinálni, hogy indulsz a szöveg 1. karakterétől és összeveted az N. karakterrel, ... az i. karaktert az N-i+1. karakterrel, ezt egészen a szöveg közepéig. Ha mind egyenlőek voltak, akkor palindróm a cuccos. Ha bármelyik pár eltér, meg is állhatsz.
#1-#2-#5 vagyok
#4: igen, tudom, rájöttem :)
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!