Анаграмма слова может быть другим словом, составленным из букв этого слова. Например, слово SOLO имеет 12 анаграмм: SOLO, LOSO, OSLO, OLSO, OSOL, OLOS, SLOO, LSOO, OOLS, OOSL, LOOS, SOOL. Напишите программу, которая подсчитывает, сколько разных анаграмм имеет данное слово.с++ помогите срочно пж!!!!
boberon:
Это не анаграммы, это перестановки. Судя по примеру, интересует число различных перестановок. Нужно взять общее количество перестановок n!, и для каждой повторяющейся буквы поделить его на k!, где k - количество повторений.
В примере с SOLO: n = 4! = 24. Буква O повторяется два раза, других повторяющихся букв нет, поэтому ответ 24 / 2! = 12.
А вот писать на C++ совсем неохота, так что тут сорри.
Ответы
Ответ дал:
0
Ответ:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int r;
long double factorial = 1.0;
string x;
cout << "Ведите слово: ";
cin >> x;
for(int i = 1; i <= x.length(); ++i) {
factorial *= i;
}
r = factorial/2;
cout << "Анаграмма слова: "<< r;
return 0;
}
Объяснение:
Будет работать только для слов, в которых ровно одна буква повторяется ровно два раза.
Ну и тип переменной factorial лучше сделать целочисленным. Скажем, long long.
Вас заинтересует
2 года назад
2 года назад
3 года назад
3 года назад
8 лет назад
8 лет назад