Mam problem wymyśleniem ‘szybkiego rozwiązania’.
Treść:
Zadanie 2.(1pkt)
Parę wyrazów nazwiemy wzajemnie odwrotnymi, jeżeli pierwszy z nich jest
równy drugiemu przeczytanemu wspak. Przykładowo: zakop oraz pokaz. Na stronie wykładu jest
plik z polskimi słowami, Twoim zadaniem jest napisać program, który wypisuje wszystkie wzajemnie
odwrotne pary słów. Każda para powinna być wypisana raz (czyli jeżeli wypisałeś parę zakop-
pokaz, to nie powinieneś wypisywać pary pokaz-zakop). Uwaga: program powinien działać szybko,
zastanów się jak unikn¡ć pętli w pętli (do generowania wszystkich par słów).
W tej chwili przetwarzam plik w pętli, dla każdej iteracji wrzucam do tablicy słów i sprawdzam czy wystąpiła już odwrotność.
Ale jest to rozwiązanie ‘wolne’, a nawet bardzo wolne.
Próbowałem robić drugą tablicę z indeksami słów po ich długości, ale zmniejsza to czas jedynie ok. 30krotnie, zastanawiałem się czy jeszcze bardziej nie rozdrobnić tablicy indeksów, i sortować słowa nie tylko po liczbie znaków, ale jeszcze po pierwszej literze, ale w najlepszym wypadku byłoby to kolejne 30tokrotne zmniejszenie.
Jakaś alternatywa?
Jest prawie 2 mln słów do przejrzenia.