1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
|
||||||
1 | ||||||
Формула подсчета перестановок13.08.2017, 18:37. Показов 3742. Ответов 5
Метки нет (Все метки)
Здравствуйте, уважаемые пользователи! На этот раз, обращаюсь к гуру комбинаторики, за простым советом. Есть вот такая несложная задача:
Анаграммы Анаграммой слова называется любая перестановка всех букв слова. Например, из слова SOLO можно получить 12 анаграмм: SOLO, LOSO, OSLO, OLSO, OSOL, OLOS, SLOO, LSOO, OOLS, OOSL, LOOS, SOOL. Напишите программу, которая выводит количество различных анаграмм, которые могут получиться из этого слова. Входные данные: Слово, количество букв в котором не превышает 14. Выходные данные: Количество различных анаграмм. Входные данные: SOLO Выходные данные: 12 Решение этой задачи легко сводится к перебору с использованием функции next_permutation(), однако, программа в последнем тесте не проходит по времени. Помню, как на практике, решали задачки по теории вероятностей с использованием формул C(n, k) и A(n, k). Если я ничего не перепутал, то зная входные данные (типа ABCDDD - ответ 120), можно получить формулу для расчета всевозможных комбинаций, но как эта формула выглядит - не помню Например, для ABCDDD можно подсчитать длину строки (=6) и число различных символов в ней (=4) и оперируя этими цифрами получить ответ (используя специальную формулу, которую я и хочу использовать для решения задачи. Буду благодарен всем, кто сможет помочь. Мое решение:
0
|
13.08.2017, 18:37 | |
Ответы с готовыми решениями:
5
Формула подсчета количества итераций цикла for Метод парных перестановок и метод подсчета Есть ли в java стандартное средство подсчета перестановок с повторениями? Формула подсчета дисперсии |
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
|
|
13.08.2017, 19:25 [ТС] | 3 |
Croessmah, да, похоже вы правы Сейчас сделаю решение и сюда выложу. Спасибо огромное!
Добавлено через 14 минут Croessmah, а как будет для ABCCDDFF? (8! / 6!) = 40320 / 720 = 56, а должно быть 5040. Добавлено через 19 минут Croessmah, можете не отвечать, я понял. Тут для каждого набора символов нужно k! считать То есть, для ABCCDDFF будет: 8! / (2! * 2! * 2!), где 2 - количество вхождений (не)уникального символа
1
|
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
|
|||||||||||
13.08.2017, 19:40 [ТС] | 5 | ||||||||||
Croessmah, да, вот решение, но теперь в последнем тесте - неправильный ответ. Можете помочь? Все, вроде, правильно и по времени теперь - идеально
Решение:
Croessmah, все, сдал Не тот тип данных просто использовал Спасибо вам! Рабочее решение:
0
|
Неэпический
|
|
13.08.2017, 20:00 | 6 |
0
|
13.08.2017, 20:00 | |
13.08.2017, 20:00 | |
Помогаю со студенческими работами здесь
6
Формула подсчета суммы Формула подсчета суммы Формула подсчёта ячеек с условиями Не работает формула подсчета калорий Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |