Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Naomi Aori
0 / 0 / 0
Регистрация: 11.08.2016
Сообщений: 10
#1

Перестановка с повторениями - C++

14.08.2016, 17:05. Просмотров 590. Ответов 5
Метки нет (Все метки)

Доброго времени суток! Помогите, пожалуйста, найти ошибку в коде. Условие:
На день рождения Пете подарили набор карточек с буквами. Теперь Петя с большим интересом составляет из них разные слова. И вот, однажды, составив очередное слово, Петя заинтересовался вопросом: "А сколько различных слов можно составить из тех же карточек, что и данное?". Помогите ему ответить на этот вопрос.

Входные данные
Вводится слово, составленное Петей – строка из маленьких латинских букв не длиннее 15 символов.

Выходные данные
Выведите одно целое число – искомое количество слов.

Примеры:
входные данные
solo
выходные данные
12

Сам код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <cmath>
 
using namespace std;
 
long long factorial(int n)
{
    if (n==0)
    return 1;
    else
    return n*factorial(n-1);
}
int main()
{
    string n;
    cin>>n;
    int c=factorial(n.size()), sum=0;
    
    for (int i=0; i<n.size()-1; ++i)
    {
        for (int j=1; j<n.size(); ++j)
        {
            if (n[i]==n[j])
            {
                sum++;
                c/=factorial(sum);
            }
        }
        sum=0;
    }
    
    cout<<c;
    //cout<<factorial(6);
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2016, 17:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перестановка с повторениями (C++):

Размещение с повторениями - C++
Даны n чисел,n&lt;=10 между ними поставить знаки &quot;+&quot; или &quot;-&quot;,чтобы получилась сумма равная S. Например, даны числа 1 2 5 7 надо поставить...

перестановки с повторениями! - C++
Помогите! есть прога все считает правильно только не выводит значения с повторениями! помогите исправить! // mat_kkursa.cpp:...

Размещение с повторениями - C++
Помогите, пожалуйста. Буду очень благодарна. Задано натуральные числа n и k. Навести в лексикографическом порядке все размещения с...

Сочетания с повторениями - C++
Очень нужен алгоритм сочетаний с повторениями.

Генератор комбинаций с повторениями - C++
Вот код он выводит все комбинации с повторениями от 1 до 3 и можно увеличить до 9. Беда в том что он начинаем генерировать с 1 const int...

Алгоритм генерации всех подмножеств с повторениями - C++
Реализовать не рекурсивную версию алгоритма, генерирующего все подмножества с повторениями я правильно понимаю использование подобного...

5
Peoples
1186 / 691 / 434
Регистрация: 06.02.2016
Сообщений: 1,821
Записей в блоге: 14
Завершенные тесты: 4
14.08.2016, 17:16 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
    string s;
    cin>>s;
    int c=0;
    sort(s.begin(),s.end());
    do {
 
        c++;
    } while ( next_permutation(s.begin(),s.end()) ); // пока возможны перестановки
    cout<<endl;
    cout<<"The number of permutationsc: "<<c;
}
Добавлено через 2 минуты
Naomi Aori, ваш вариант у меня работает
1
Naomi Aori
0 / 0 / 0
Регистрация: 11.08.2016
Сообщений: 10
14.08.2016, 17:45  [ТС] #3
Большое спасибо! Next_permutation это готовая функция такая?
0
Peoples
1186 / 691 / 434
Регистрация: 06.02.2016
Сообщений: 1,821
Записей в блоге: 14
Завершенные тесты: 4
14.08.2016, 17:46 #4
Naomi Aori, функция из стандартной библиотеке (STL)
0
Mr.X
Эксперт С++
3054 / 1699 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
14.08.2016, 19:43 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//Карточки
//(Время: 1 сек. Память: 16 Мб Сложность: 48%)
 
//На день рождения Пете подарили набор карточек с буквами.
//Теперь Петя с большим интересом составляет из них разные слова.
//И вот, однажды, составив очередное слово, Петя заинтересовался
//вопросом: "А сколько различных слов можно составить из тех же
//карточек, что и данное?".
//Помогите ему ответить на этот вопрос.
 
//Входные данные
 
//Во входном файле INPUT.TXT задано слово, составленное Петей -
//строка из маленьких латинских букв не длиннее 15 символов.
 
//Выходные данные
 
//В выходной файл OUTPUT.TXT выведите одно целое число -
//ответ на поставленную задачу.
 
//Пример
//№ INPUT.TXT   OUTPUT.TXT
//1 solo        12
///////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <map>
#include <string>
///////////////////////////////////////////////////////////////////////////////
typedef std::string                     T_str;
typedef unsigned long long              T_int;
typedef std::map    < char, T_int   >   T_count_of_letter;
///////////////////////////////////////////////////////////////////////////////
T_int   count_different_words_total( T_str  const   &   word )
{
    T_int               res             {1};
    T_int               denominator     {1};
    T_count_of_letter   count_of_letter;
 
    for( size_t  i{}; i < word.size(); ++i )
    {
        res             *=  (i + 1);
        denominator     *=  ++count_of_letter
                                [
                                    word[i]
                                ];
    }//for
 
    return  res     /   denominator;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    T_str   word;
    std::cin    >>  word;
 
    std::cout   <<  count_different_words_total( word )
                <<  std::endl;
}
1
Naomi Aori
0 / 0 / 0
Регистрация: 11.08.2016
Сообщений: 10
15.08.2016, 01:50  [ТС] #6
Mr.X спасибо! Задача прошла все тесты, до этого было только частичное решение)
0
15.08.2016, 01:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2016, 01:50
Привет! Вот еще темы с ответами:

Подсчитать число размещений с повторениями из чисел - C++
Доброго времени суток. Помогите написать программу в С++, по моему алгоритму, и скажите пожалуйста насколько правильно продумал решение...

Комбинаторика.Подсчитать число размещений с повторениями - C++
#pragma hdstop #pragma argsused #include &lt;math.h&gt; #include &lt;tchar.h&gt; #include &lt;iostream.h&gt; #include &lt;conio.h&gt; Long double fact...

Составить функцию подсчитывающую число сочетаний с повторениями - C++
Не могли бы Вы объяснить в чем заключается суть поставленной задачи: Я не могу понять именно задание, а не как его решить. То...

Ошибка во время выполнения программы (размещения с повторениями) - C++
Давно я не заходил на прекрасный форум...Надеюсь, найдутся люди, которые смогут помочь... Итак, задача: Даны N целых чисел x1,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru