Pagini recente » Cod sursa (job #2472833) | Cod sursa (job #2237161) | Cod sursa (job #1718251) | Cod sursa (job #1860749) | Cod sursa (job #1458170)
#include <iostream>
#include <fstream>
using namespace std;
int n;
int v[8];
inline void swap (int &a, int &b) {
int c = a;
a = b;
b = c;
}
inline int next () {
int i, found = 0;
for (i = n - 2; i >= 0; --i) {
if (v[i] < v[i+1]) {
found = 1;
break;
}
}
if (!found) return 0;
int a = i; //swap index 1
for (i = n - 1; i >= 0; --i) {
if (v[i] > v[a]) break;
}
int b = i; //swap index 2
swap (v[a], v[b]);
int j;
for (i = a + 1, j = 1; i <= n/2; ++i, ++j) {
swap (v[i], v[n-j]);
}
return 1;
}
int main (void) {
freopen("permutari.in", "r", stdin);
freopen("permutari.out", "w", stdout);
cin >> n;
for (int i = 0; i < n; ++i) {
v[i] = i + 1;
}
do {
for (int i = 0; i < n; ++i) {
cout << v[i];
}
cout << "\n";
} while (next());
return 0;
}