Pagini recente » Cod sursa (job #1632689) | Cod sursa (job #135054) | Cod sursa (job #1737996) | Cod sursa (job #3000321) | Cod sursa (job #865124)
Cod sursa(job #865124)
#include <stdio.h>
#include <assert.h>
typedef int sir[100];
sir x;
int i, k, N;
int as, ev;
sir a;
void succ(sir x, int k, int* as)
{
if(x[k] < N)
{
*as = 1;
x[k]++;
}
else
*as = 0;
}
void valid(sir x, int k, int* ev)
{
int i;
*ev = 1;
for(i=1;i<=k-1;i++)
if(!(x[k]!=x[i]))
*ev = 0;
}
void afis(sir x, int k)
{
int i;
for(i=1;i<=k;i++)
printf("%d ", a[x[i]]);
printf("\n");
}
int main()
{
freopen("permutari.in", "r", stdin);
freopen("permutari.out", "w", stdout);
scanf("%d", &N);
assert(N >= 1 && N <= 8);
for(i=1;i<=N;i++)
a[i] = i;
k = 1;
x[k] = 0;
while(k > 0)
{
do
{
succ(x, k, &as);
if(as)
valid(x, k, &ev);
}while(as && !ev);
if(as)
if(k == N)
afis(x, k);
else
{
k++;
x[k] = 0;
}
else
k--;
}
return 0;
}