Třídy ekvivalence
Je dán neprázdný řetězec S skládající se výhradně ze znaků malých písmen anglické abecedy (a, b, c, ..., z).Hodnotu znaku definujeme jako pořadové číslo tohoto znaku v seznamu (a, b, c, ..., z), hodnota a je tak 1, hodnota b je 2, atd, hodnota z je 26.
V této úloze standardní pojem podřetězec mírně omezíme a budeme jím rozumět právě každý (běžný) podřetězec řetězce S, jehož délka je alespoň 2 a zároveň je menší než délka S. Nebudeme tedy uvažovat prázdný podřetězec, podřetězce délky 1 a samotný S jako svůj vlastní podřetězec.
Řekneme, že dva podřetězce A a B řetězce S jsou ve slabém kontaktu, pokud první znak A leží vlevo od prvního znaku B a pro poslední znak A platí, že neleží vlevo od prvního znaku B a zároveň leží vlevo od posledního znaku B. Pokud A a B jsou ve slabém kontaktu, řekneme, že také B a A jsou ve slabém kontaktu. Relace "být ve slabém kontaktu" je tedy symetrickou relací na množině všech podřetězců S.
Příklad: S = abcdef, A = bcd, B = cdef, A a B jsou ve slabém kontaktu.
S = abcdef, A = ab, B = cde, A a B nejsou ve slabém kontaktu.
S = abcdef, A = bcde, B = cd, A a B nejsou ve slabém kontaktu.
Řekneme, že dva podřetězce A a B řetězce S jsou v silném kontaktu, pokud jsou jednak ve slabém kontaktu a zároveň pokud součet hodnot těch znaků A, které neleží v B, je roven součtu hodnot těch znaků B, které neleží v A. Relace "být v silném kontaktu" je také symetrickou relací na množině všech podřetězců S.
Příklad: S = aabdxybea, A = abdxy, B = xybe, A a B jsou v silném kontaktu, součet hodnot a, b, d je 7, stejně jako součet hodnot b, e.
Relaci ekvivalence na množině všech podřetězců S definujeme rekurentně takto:
Nechť A a B jsou podřetězce S.
1. Pokud A a B jsou v silném kontaktu, pak A a B prohlásíme za ekvivalentní.
2. Pokud existuje podřetězec C řetězce S takový, že A je ekvivalentní s C a zároveň B je ekvivalentní s C, pak A a B prohlásíme za ekvivalentní.
3. Každý podřetězec řetězce S prohlásíme za ekvivalentní se sebou samým.
Úloha
Máme vypsat v neklesajícím pořadí mohutnosti všech tříd ekvivalence na množině všech podřetězců S.
Vstup
Na vstupu je jeden textový řádek obsahující právě řetězec S. Délka S je alespoň 3 a nejvýše 500.Výstup
Na výstupu je jeden textový řádek obsahující v neklesajícím pořadí mohutnosti všech tříd ekvivalence na množině všech podřetězců S. Sousední údaje na řádku jsou odděleny jednou mezerou a řádek neobsahuje úvodní mezeru, může obsahovat koncové mezery.Příklad 1
Vstup:aaaaaaVýstup:
2 3 4 5Jednotlivé třídy ekvivalence, které jsou celkem čtyři, zachycuje následující seznam množin podřetězců, znaky S neobsažené v konkrétním podřetězci jsou pro větší přehlednost nahrazeny tečkami.
{aaaaa. | .aaaaa}, {aaaa.. | .aaaa. | ..aaaa}, {aaa... | .aaa.. | ..aaa. | ...aaa}, {aa.... | .aa... | ..aa.. | ...aa. | ....aa}.
Příklad 2
Vstup:acacacaVýstup:
1 2 2 2 3 4 6Jednotlivé třídy ekvivalence, jichž je celkem 7, zachycuje následující seznam množin podřetězců, znaky S neobsažené v konkrétním podřetězci jsou pro větší přehlednost nahrazeny tečkami.
{.cacac.}, {acaca.. | ..acaca}, {acacac. | .cacaca}, {.cac... | ...cac.}, {aca.... | ..aca.. | ....aca}, {acac... | .caca.. | ..acac. | ...caca}, {ac..... | .ca.... | ..ac... | ...ca.. | ....ac. | .....ca}.
Příklad 3
Vstup:aabbaabaabbVýstup:
1 1 1 1 1 1 1 1 2 2 2 3 3 4 5 5 5 7 8Jednotlivé třídy ekvivalence, jichž je celkem 19, zachycuje následující seznam množin podřetězců, znaky S neobsažené v konkrétním podřetězci jsou pro větší přehlednost nahrazeny tečkami.
{aa.........}, {.ab........}, {.abbaabaab.}, {.abbaabaabb}, {...ba......}, {....aa.....}, {.......aa..}, {........ab.}, {aabbaaba... | .abbaabaa..}, {aabbaabaab. | ..bbaabaabb}, {.....ab.... | ......ba...}, {aabbaabaa.. | ..bbaabaab. | ...baabaabb}, {.abbaab.... | ..bbaaba... | .....abaabb}, {aabba...... | .abbaa..... | ...baaba... | .....abaab.}, {aabbaa..... | ..bbaab.... | ...baabaa.. | ....aabaab. | ......baabb}, {aabbaab.... | .abbaaba... | ..bbaabaa.. | ...baabaab. | ....aabaabb}, {.abb....... | ..bba...... | ....aaba... | .....abaa.. | ........abb}, {aabb....... | .abba...... | ..bbaa..... | ...baab.... | ....aabaa.. | ......baab. | .......aabb}, {aab........ | ..bb....... | ...baa..... | ....aab.... | .....aba... | ......baa.. | .......aab. | .........bb}.