#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();
}
Алгоритм перестановок
Алгоритм перестановок выполнен следующим образом.
Цитата: 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);
}
#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);
}
http://forum.codenet.ru/threads/59579-Алгоритм-перестановки-элементов-множества - и обратите внимание на ссылки там.