Pagini recente » Cod sursa (job #1939275) | Cod sursa (job #1070411) | Cod sursa (job #2973907) | Cod sursa (job #1976704) | Cod sursa (job #380104)
Cod sursa(job #380104)
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int p[25];
int i, sw, k, m, j, n;
bool valid(void)
{
return 1;
}
void print(void)
{
for(i = 1; i <= n; ++i)
printf("%d ", p[i]);
printf("\n");
}
void solveProblem(void)
{
for(i = 1; i <= n; i++)
p[i] = i;
if(valid())
print();
do
{
i = n - 1;
sw = 1;
while((sw) && (p[i] > p[i+1]))
{
--i;
if(!i)
sw = 0;
}
k = n;
while(p[i] > p[k])
--k;
swap(p[i], p[k]);
m = (n-i) / 2;
for(j = 1; j <= m; j++)
swap(p[i+j], p[n+1-j]);
if(sw)
if(valid())
print();
}while(sw);
}
int main(void)
{
freopen("permutari.in", "r", stdin);
freopen("permutari.out", "w", stdout);
scanf("%d", &n);
solveProblem();
return 0;
}