Task 84. Анаграммы

Task 84. Анаграммы

UniLecs

Задача: анаграммой слова называется любая перестановка всех букв слова. Например, из слова СОЛО можно получить 12 анаграмм: СОЛО, ЛОСО, ОСЛО, ОЛСО, ОСОЛ, ОЛОС, СЛОО, ЛСОО, ООЛС, ООСЛ, ЛООС, СООЛ.

Необходимо написать функцию, ктр выведет кол-во различных анаграмм, ктр могут получиться из этого слова.

Входные данные: строка, кол-во символов не превышает 10.

Вывод: кол-во анаграмм.

Пример: СОЛО

Вывод: 12

Идея: это классическая задача из раздела комбинаторики, а конкретно, из раздела Перестановки с повторениями. Если у нас N различных элементов, то существует N! их различных перестановок. Если K нектр элементов идентичны, то кол-во перестановок уменьшается в K! раз.

Формула для перестановок с повторениями:

P(n1, n2, ..., nk) = n! / (n1! * n2! * ... * nk!)

Более детальную информацию вы можете найти:

Реализация:

реализация на C#

https://gist.github.com/unilecs/fa35b1d4e6ba70011e834bbe9f4f1283

Тест:

https://dotnetfiddle.net/EizhEg

Report Page