Układanie wyrazów
Układanie wyrazów
Witam. Mam za zadanie wymyślić algorytm który ciąg z literami P,I,E,S uporządkuje w ten sposób aby utworzyć wyrazy PIES. Np mam PPIIEESS i musimy ułożyć PIESPIES. Do dyspozycji mam tylko jeden typ przełożenia - czwórka(dokładnie i tylko czwórka) znaków z dowolnego miejsca obok siebie na koniec ciągu. Więc ciąg wyjściowy to jak najwięcej słów PIES oraz ewentualne śmieci na prawym końcu ciągu. Jedyne co przychodzi mi na razie do głowy to brute force czyli takie przekładanie aż otrzymamy wszystkie układy. Ale nawet przy tej metodzie nie wiem jaki mógłby być warunek końca, tzn ile np jest wszystkich możliwości mając tylko tą jedną operacje przełożenia? Jakby był ktoś tak miły i spróbował nakierować mnie na jakieś rozwiązanie to byłbym bardzo wdzięczny. Proszę o pomoc. Pozdrawiam.
-
- Użytkownik
- Posty: 166
- Rejestracja: 11 lip 2007, o 22:59
- Płeć: Mężczyzna
- Lokalizacja: Bytom
- Pomógł: 49 razy
Układanie wyrazów
Jesteś pewien że rozwiązanie w ogóle zawsze istnieje? Jeżeli nasz startujący ciąg to PEISP, iterując Twoją operację w jedyny możliwy sposób dostajemy
PPEIS
SPPEI
ISPPE
EISPP
PEISP
więc nigdy nie dostajemy nigdzie PIES...
PPEIS
SPPEI
ISPPE
EISPP
PEISP
więc nigdy nie dostajemy nigdzie PIES...
Układanie wyrazów
Masz racje rozwiązanie nie zawsze istnieje ( algorytm ma to uwzględniać ). Masz może jakiś pomysł? Jedyne co mi przychodzi to głowy to sprawdzanie kolejnych liter, jesli jest zle to przekładamy. Ale też nie za bardzo wiem kiedy się zatrzymać. Co więcej czy jeśli tak postępując i już na drugiej pozycji nie uda mi się ustawić wymaganej litery tzn ze w ogóle się nie da ? Ciężko mi z tym idzie...
Układanie wyrazów
Hmm.. Jako że dalej borykam się z tym problemem to mam takie pytanie bardziej ogólne. Ile jest wszystkich możliwych ciągów ( niekoniecznie różnych - tzn ten sam ciąg otrzymany w inny sposób jest rozróżnialny ) jakie możemy otrzymać przy pomocy tej operacji dla ciągu rozmiaru n ?
dla n = 4 mamy 1
dla n = 5 mamy 5
dla n = 6 ... ?
dla n = 4 mamy 1
dla n = 5 mamy 5
dla n = 6 ... ?