Pagini recente » Cod sursa (job #747295) | Cod sursa (job #1667653) | Cod sursa (job #3296256) | Rating Vlad Fetitoiu (VladFetitoiu_FMI_UVT) | 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;
}