Сначала поместите все буквы в алфавитном порядке, а затем хэшируйте результат с помощью любого алгоритма хэширования (crc32, md5sum, sha1, считайте гласные, что угодно ... хотя подсчет гласных приведет к менее эффективному решению)и сохраните слово как листовой узел для этой записи хеша (очевидно, в связанном списке) - выполните мод (x) для результата хеша, чтобы ограничить сегменты 2 ^ x.
Затем,когда вы найдете анаграмму, выполните ту же самую процедуру «вставки» на вашем тесте слове: расположите буквы в алфавитном порядке, а затем выполните ту же хеш-функцию.Затем для каждого конечного узла сравните список алфавитных букв с алфавитным списком сохраненного слова.Каждое совпадение - это анаграмма.
(Обычно я не люблю помогать с домашними заданиями, но это было слишком заманчиво. Теперь я хочу написать небольшую забавную программу, чтобы найти все анаграммы вданный словарь.)