Pagini recente » Cod sursa (job #2828703) | Cod sursa (job #2825938) | Cod sursa (job #2240887) | Cod sursa (job #578853) | Cod sursa (job #1010641)
#include <stdio.h>
int isPerm(int* v, int *b, int n)
{
for(int i = 0; i < n; i++)
b[i] = 0;
for(int i = 0; i < n; i++)
{
b[v[i]]++;
if(b[v[i]] > 1)
return 0;
}
return 1;
}
int inc(int* v, int n, int i)
{
if(i == n) return 0;
v[n-i-1]++;
if(v[n-i-1] == n)
{
v[n-i-1] = 0;
inc(v, n, i+1);
}
}
int fact (int n)
{
int b = 1;
for(int i = 2; i <= n; i++)
b*=i;
return b;
}
int main()
{
int n;
FILE* fr = fopen("permutari.in", "r");
FILE* fw = fopen("permutari.out", "w");
fscanf(fr, "%d", &n);
int *A = new int[n];
int *B = new int[n];
for(int i = 0; i < n; i++)
A[i] = i;
int facto = fact(n);
int k = 0;
while(facto > k)
{
if(isPerm(A, B, n))
{
k++;
for(int i = 0; i < n; i++)
fprintf(fw, "%d ", A[i] + 1);
fprintf(fw, "\n");
}
inc(A, n, 0);
}
return 0;
}