Uwaga 1: Długość ciągu kwadratowego jest zawsze równa.
Obserwacja 2: Każdy kwadrat podciągiem długości 2n (n> 1) jest połączeniem dwóch krótszych subsekwencji: jeden o długości 2 (n-1) i jeden o długości 2
pierwsze znaleźć podsekwencje o długości dwóch, tj. znaki, które występują dwa lub więcej razy w ciągu znaków. Nazwiemy te par. Dla każdego podciągu o długości 2 (1 para) zapamiętaj pozycję pierwszego i ostatniego znaku w sekwencji.
Załóżmy teraz, że mamy wszystkie podsekwencje długości 2 (n-1) i wiemy dla każdego, gdzie w ciągu pierwsza i druga część zaczyna się i kończy. Możemy znaleźć sekwencje o długości 2n za pomocą obserwacji 2:
Przejrzyj wszystkie podciągi długości 2 (n-1) i znajdź wszystkie pary, w których pierwszy element w parze znajduje się między ostatnią pozycją pierwszej części i pierwsza pozycja drugiej części, a druga pozycja leży po ostatniej pozycji drugiej części. Za każdym razem, gdy taka para zostanie znaleziona, połącz ją z obecnym podsekwencją długości 2 (n-2) w nowy podciąg długości 2n.
Powtórz ostatni krok, dopóki nie zostaną znalezione żadne nowe podcięcia kwadratów.
Jakie jest twoje pytanie? Poza tym: "proszę, odrób moją pracę domową dla mnie"? –
Jeśli jest to zadanie domowe, oznacz je jako "zadanie domowe" i powiedz, co zrobiłeś do tej pory, aby podejść do problemu. (Jeśli to nie jest zadanie domowe, przepraszam.) Dzięki! – ninjagecko
Natrafiłem na to pytanie w jednym z tych wyzwań programistycznych ... uznałem, że jest interesujący, ale nie udało się go rozwiązać .. – Avinash