Pagini recente » Cod sursa (job #1378389) | Cod sursa (job #522729) | Cod sursa (job #598668) | Cod sursa (job #1146939) | Cod sursa (job #1603444)
#include <stdio.h>
void swap(int v[], int i, int j){
int aux;
aux = v[i];
v[i] = v[j];
v[j] = aux;
}
void permute(int v[], int start, int end){
int i;
if(start == end){
for(i = 0; i < end; i++){
printf("%d ", v[i]);
}
printf("\n");
}
else {
for(i = start; i < end; i++){
permute(v, start + 1, end);
swap(v, start + 1, end - 1);
int k = start + 1;
while(k < end && v[start] > v[k]){
k++;
}
if(k >= end){
continue;
}
swap(v, start, k);
}
swap(v, start + 1, end - 1);
}
}
int main(){
FILE *in, *out;
in = fopen("permutari.in", "r");
out = freopen("permutari.out", "w", stdout);
int N, i;
fscanf(in, "%d", &N);
int v[N];
for(i = 0; i < N; i++){
v[i] = i + 1;
}
permute(v, 0, N);
fclose(in);
fclose(out);
return 0;
}