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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.97
BioShark
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 38
#1

Генерация массива всех перестановок из n элементов. - C++

10.02.2012, 18:51. Просмотров 4823. Ответов 2
Метки нет (Все метки)

Нашел по этой теме здесь на форумах такой код:
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
#include <iostream.h>
 
int X[100];
int N;
void Swap(int a,int b)
{
    int t=X[a];
    X[a]=X[b];
    X[b]=t;
}
void Generate(int k)
{
    if (k==N)
    {
        for(int i=0;i<N;i++)
            cout<<X[i]<<" ";
        cout<<"\n";
    }
    else
    { 
        for(int j=k;j<N;j++)
        {
            Swap(k,j);
            Generate(k+1);
            Swap(k,j);
        }
    }
}
 
void main()
{
    cout<<"N=";
    cin>>N;
    for(int i=0;i<N;i++)
        X[i]=i+1;
    Generate(0);
}
но тут я так понимаю перестановки только выводятся на экран, а мне нужен массив который содержит все эти перестановки. помогите пожалуйста записать все перестановки в массив.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2012, 18:51     Генерация массива всех перестановок из n элементов.
Посмотрите здесь:
Генерация всех перестановок n элементного множества C++
C++ Быстрая сортировка, подсчитать количество перестановок элементов массива
Какую сортировку массива применить, чтобы посчитать количество перестановок двух соседних элементов? C++
C++ Определить кол-во элементов массива, которые больше среднеарифметического значения всех элементов массива
Найти сумму элементов массива, равных среднему арифметическому всех элементов массива C++
Удаление четных элементов массива,больших среднего арифметического всех элементов массива C++
Из всех положительных элементов массива вычесть элемент с номером k[l], из всех отрицательных - число n C++
Найти разность между произведением всех положительных элементов массива и суммой модулей всех отрицательных C++
Выведение всех перестановок C++
C++ Вывод всех перестановок без использования массивов
Рекурсивная процедура печати всех перестановок из n символов C++
C++ Поиск всех перестановок символов из строки (0..9)..пожалуйста помогите!!!

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
10.02.2012, 21:11     Генерация массива всех перестановок из n элементов. #2
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
#include <cstdlib>
#include <iomanip>
 
int main()
{
    std::srand(std::time(nullptr));
    const std::size_t size = 5;
    std::vector<int> v(size);
    std::generate(v.begin(), v.end(), [] { return std::rand() % 21; });
    for(const auto& it: v)
        std::cout << std::setw(4) << it;
    std::cout << std::endl << std::endl;
    std::sort(v.begin(), v.end());
    std::vector<std::vector<int>> out;
    do
        out.push_back(v);
    while(std::next_permutation(v.begin(), v.end()));
    for(const auto& i: out)
    {
        for(const auto& it: i)
            std::cout << std::setw(4) << it;
        std::cout << std::endl;
    }
    return 0;
}
http://liveworkspace.org/code/f1ac53...8690a57e451af1
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
10.02.2012, 21:43     Генерация массива всех перестановок из n элементов. #3
Цитата Сообщение от soon Посмотреть сообщение
std::vector<std::vector<int>> out;
C++
1
std::vector <std::vector <int> > out;
Ответ Создать тему
Опции темы

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