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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 127, средняя оценка - 4.85
forte
2 / 2 / 0
Регистрация: 22.06.2010
Сообщений: 6
29.09.2010, 14:33     Генерация всех перестановок n элементного множества #1
с++
1) Напечатать все перестановки чисел от 1 до n используя рекурсивный алгоритм
пример
123
132
213
231
312
321

2)Перечислить все последовательности длины к из чисел 1 2 3 ... n
пример пусть n=3 k=4
1111
1112
1113
1121
1122
...
3333

Помогите пожалуйста, а то с комбинаторикой не дружу
Заранее спасибо
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dexter
 Аватар для Dexter
284 / 144 / 16
Регистрация: 13.10.2009
Сообщений: 164
29.09.2010, 15:11     Генерация всех перестановок n элементного множества #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
1) Напечатать все перестановки чисел от 1 до n используя рекурсивный алгоритм
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
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++)
            std::cout<<X[i]<<" ";
        std::cout<<"\n";
    }
    else
    { 
        for(int j=k;j<N;j++)
        {
            Swap(k,j);
            Generate(k+1);
            Swap(k,j);
        }
    }
}
 
int main()
{
    std::cout<<"N=";
    std::cin>>N;
    for(int i=0;i<N;i++)
        X[i]=i+1;
    Generate(0);
}
Добавлено через 14 минут
2)Перечислить все последовательности длины к из чисел 1 2 3 ... n
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
int N,K;
int X[100];
void Generate(int k)
{
    if(k==K)
    {
        for(int i=0;i<K;i++)
            std::cout<<X[i]<<" ";
        std::cout<<"\n";
    }
    else
    {
        for(int j=0;j<N;j++)
        {
            X[k]=j+1;
            Generate(k+1);
        }
    }
 
}
int main()
{
    std::cout<<"N=";
    std::cin>>N;
    std::cout<<"K=";
    std::cin>>K;
    Generate(0);
}
TommyG
1 / 1 / 0
Регистрация: 11.12.2010
Сообщений: 48
23.12.2012, 13:15     Генерация всех перестановок n элементного множества #3
Слушайте ребята, а не мог ли кто-нибудь на псевдокоде написать как и что делается в 1ой задаче? очень нужно...
romaa6
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 1
08.04.2015, 00:03     Генерация всех перестановок n элементного множества #4
А как сделать чтоб і елемент не занимал і-ю позицию? Пример – 2,5,4,3,1
Yandex
Объявления
08.04.2015, 00:03     Генерация всех перестановок n элементного множества
Ответ Создать тему
Опции темы

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