Форум программистов, компьютерный форум CyberForum.ru

Дана строка, состоящая из M попарно различных символов. Вывести все перестановки символов данной строки. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Уважаемые форумчане, не могли бы вы поделиться ссылками на статьи по созданию модулей в C++ http://www.cyberforum.ru/cpp-beginners/thread906767.html
Уважаемые форумчане, не могли бы вы поделиться ссылками на уроки или статьи по модульному программированию. Меня интересуют не сами функции, классы и т.п., а то, как создать свой заголовочный файл со структурами данных, где он должен размещаться, как создать файл cpp с описаниями функций, другой файл cpp с основной программой, и как это все свести воедино? Заранее спасибо!
C++ Дана последовательность целых чисел. Известно, что среди них несколько раз встречаются два подряд идущих нуля. 1. Дана последовательность целых чисел. Известно, что среди них несколько раз встречаются два подряд идущих нуля. Определить, сколько раз встречается эта ситуация. http://www.cyberforum.ru/cpp-beginners/thread906759.html
Вычислить и напечатать произведение первых 7 элементов и сумм следующих элементов, которые находятся на первых позициях C++
Дано одномерный массив Т, состоящий из 18 символов. Вычислить и напечатать произведение первых 7 элементов и сумм следующих элементов, которые находятся на первых позициях. Помогите розв. задачу пожалуйста.
C++ Помогите написать простой арканоид
Помогите написать простой арканоид на с++ (без бонусов,без новых уровней,без жизней,без подсчета очков).Хочу посмотреть как будет выглядить самый простой арканоид.В дальнейшем изучении с++ буду улучшать арканоид. Спасибо.
C++ Калькулятор рядов http://www.cyberforum.ru/cpp-beginners/thread906702.html
Товарищи программисты, можно ли просто и доступно объяснить, как сделать калькулятор числовых рядов на спп или получить исходник? с простыми дей-ями, типа -,+,*, x^n, sin, и cos?
C++ Обернуть весь проект в одно пространство имен Хотелось быть не писать в каждом новом файле namespace myNamespace, но при этом иметь один namespace для всех файлов, чтобы не было конфликта имен в классами, что хранятся в windows.h (не std). Как? подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
19.06.2013, 17:48     Дана строка, состоящая из M попарно различных символов. Вывести все перестановки символов данной строки.
k_ehgor, тогда так:
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
#include <iostream>
#include <clocale>
#include <algorithm>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "");
    const int N = 4;
    int A[N]; // имеем множество A {1, ... N}
    int counter = 0; // счетчик числа перестановок
    for (int i = 0; i < N; i++) // заполняем множество
        A[i] = i + 1;
    // sort(A, A + N); // необходимо при вводе произвольных элементов
    do
    {
        for (int i=0; i < N; i++)
            cout << A[i] << ' ';
        cout << endl;
        counter++;
    } while (next_permutation(A, A + N));
    cout << "Всего перестановок: " << counter << endl;
    return 0;
}
Второй вариант без STL:
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
#include <iostream>
#include <clocale>
 
using namespace std;
 
// вывод множества на экран
void print(const int *A, const int size);
// функция перестановки двух чисел
void swap(int &, int &);
// функция генерации следующей перестановки
void next_perm(int k, int *A, const int size, int &counter);
 
 
int main()
{
    setlocale(LC_ALL, "");
    const int N = 4;
    int A[N]; // имеем множество A {1, ... N}
    int counter = 0; // счетчик числа перестановок
    for (int i = 0; i < N; i++) // заполняем множество
        A[i] = i + 1;
    next_perm(0, A, N, counter);
    cout << "Всего перестановок: " << counter << endl;
    return 0;
}
 
void print(const int *A, const int size)
{
    for (int i=0; i < size; i++)
        cout << A[i] << ' ';
    cout << endl;
}
 
void swap(int &x, int &y)
{
    int tmp = x;
    x = y;
    y = tmp;
}
 
void next_perm(int k, int *A, const int size, int &counter)
{
    // если заполнилось
    if (k == size)
    {
        print(A, size);
        counter++;
        return;
    }
 
    for(int i = k; i < size; i++)
    {
        swap(A[k], A[i]);
        next_perm(k + 1, A, size, counter); // следующая перестановка
        swap(A[k], A[i]);
    }
}
 
Текущее время: 20:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru