Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Алгоритм перестановок

75K
03 октября 2011 года
fanpilot
1 / / 03.10.2011
Алгоритм перестановок выполнен следующим образом.

Код:
#include<iostream.h>
#include<algorithm.h>
#include<conio.h>
using namespace std;
int main()
{
int a[100];
int m, i;
cout<<"Input m<100 ";
cin>>m;
        for (i=0; i<m; i++)
        {
        a=i+1;
        cout<<a<<" ";
        }
cout<<"\n";
while (next_permutation(a,a+m))
        {
        for (i=0; i<m; i++)
        cout <<a <<" ";
        cout << endl;
        }
getch();
}


Подскажите вариант реализации без использования обобщённых функций.
341
03 октября 2011 года
Der Meister
874 / / 21.12.2007
Цитата: fanpilot
Подскажите вариант реализации без использования обобщённых функций.

Рекурсия подойдёт?

Код:
#include <iostream>
#include <algorithm>

using namespace std;

void Permute(int * values, int count, int n = 0) {
    if (n >= count - 1) {
        for (int i = 0; i < count; i++) {
            cout << values << " ";
        }
        cout << endl;
    }
    else {
        Permute(values, count, n + 1);
        for (int i = n + 1; i < count; i++) {
            swap(values, values[n]);
            Permute(values, count, n + 1);
            swap(values, values[n]);
        }
    }
}

int main() {
    int a[100];
    int m;
    cout<<"Input m<100 ";
    cin>>m;
    for (int i=0; i<m; i++) {
        a=i+1;
    }
    Permute(a, m);
}
Этот алгоритм не сравнивает элементы, а потому универсальнее, только порядок перестановок у него несколько иной.
297
04 октября 2011 года
koodeer
1.2K / / 02.05.2009
http://forum.codenet.ru/threads/59579-Алгоритм-перестановки-элементов-множества - и обратите внимание на ссылки там.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог