Cod sursa(job #1992536)

Utilizator DanielD1234Dinca Daniel DanielD1234 Data 20 iunie 2017 17:47:51
Problema Generare de permutari Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>
#include <stdlib.h>

void printare(FILE * fisi2,int p,int * k){
	int i;
	for (i=0;i<p;i++){
		fprintf(fisi2,"%d ",k[i]);
	}
	fprintf(fisi2,"\n");
}

int validare(int p,int * permutare){
	int i,j;
	for (i=0; i < p; i++)
		for (j=0;j<p;j++)
			if ((permutare[i]==permutare[j]) && (i!=j))
				return -1;
	return 0;
}

void genpermutari(int p,int * permutare,int i,FILE * fisi2){
	int x;
	
	if (i==p){
		x=validare(p,permutare);
		if (x==0)
			printare(fisi2,p,permutare);
		return;
	}

	int j;
	
	for (j=0;j<p;j++){
		permutare[i]=j+1;
		genpermutari(p,permutare,i+1,fisi2);
	}
}

int main(){
	int p;
	FILE * fisi;
	FILE * fisi2;
	fisi=fopen("permutari.in","r");
	fisi2=fopen("permutari.out","w");
	fscanf(fisi,"%d",&p);
	int * permutare=(int *)malloc(p*sizeof(int));
	genpermutari(p,permutare,0,fisi2);
	fclose(fisi);
	fclose(fisi2);
	return 0;
}