Cod sursa(job #1603444)

Utilizator andreibotilaBotila Andrei andreibotila Data 17 februarie 2016 15:48:26
Problema Generare de permutari Scor 40
Compilator c Status done
Runda Arhiva educationala Marime 0.77 kb
#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;
}