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

Составить программу генерации всех перстановок: натуральных чисел от 1 до n - C++

Восстановить пароль Регистрация
 
asspra
0 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 30
15.06.2013, 00:30     Составить программу генерации всех перстановок: натуральных чисел от 1 до n #1
Перестановкой из n элементов называется последова-тельность длины n, все элементы которой различны. Со-ставить программу генерации всех перстановок: Нату-ральных чисел от 1 до n. Например, перестановками трех чисел являются: (1,2,3), (1,3,2), (2,1,3), (2,3,1), (3,1,2), (3,2,1) и других перстановок трех чисел нет; Заданных n символов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2013, 00:30     Составить программу генерации всех перстановок: натуральных чисел от 1 до n
Посмотрите здесь:

C++ Составить программу для нахождения наименьшего общего кратного трех натуральных чисел
написать программу произведение всех натуральных чисел от 10 до 20 C++
Составить программу преобразования натуральных чисел C++
C++ составить программу нахождения произведения ряда натуральных чисел от 15 до 41
Составить программу подсчета числа всех натуральных чисел, меньших M, квадрат суммы цифр которых равен X. C++
Написать программу с функцией, вычисляющей произведение всех натуральных чисел от a до b с шагом c C++
C++ Составить программу вывода на экран квадратов всех натуральных чисел меньших 20
Составить программу вычисления количества всех делителей всех чисел от 1 до n C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gazlan
2867 / 1815 / 272
Регистрация: 27.08.2010
Сообщений: 4,919
Записей в блоге: 1
15.06.2013, 00:37     Составить программу генерации всех перстановок: натуральных чисел от 1 до n #2
Липский, В. "Комбинаторика для программистов", М., Мир, 1988
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
15.06.2013, 03:58     Составить программу генерации всех перстановок: натуральных чисел от 1 до n #3
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;
}
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]);
    }
}
Yandex
Объявления
15.06.2013, 03:58     Составить программу генерации всех перстановок: натуральных чисел от 1 до n
Ответ Создать тему
Опции темы

Текущее время: 21:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru