Cod sursa(job #530205)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 7 februarie 2011 10:57:11
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <stdio.h>
int n;
FILE *f=fopen("permutari.in","r");
FILE *g=fopen("permutari.out","w");
int x[101],vmax[4]={0,23,59,59};

void tipar(int a){
	register int i;
	for(i=1;i<=a;i++){
		fprintf(g,"%d ",x[i]);
	}
	fprintf(g,"\n");
}

bool cont(int k){
	for(register int i=1;i<k;i++){
		if(x[i]==x[k])
			return false;
	}
	return true;
}

void back(int k) {
	int i;
	if (k>n){//daca s-au generat toate nivelele,adica s-a ajuns imediat dupa ultimul nivel am solutie
		tipar(k-1);
		return;
	}	
	for(i=1;i<=n;i++){//incerc fiecare valoare posibila la nivelul k
		//printf("%d",k);
		x[k]=i;
		if (cont(k))//verificam daca valoarea tocmai incercata pe nivelul k(i) impreuna cu valorile deja validate de acest cont de pe nivelele 1,k-1 poate duce la solutie
			back(k+1);	
	}
}



int main(void){
	register int i;
	
	fscanf(f,"%d",&n);
	fclose(f);
	back(1);
	fclose(g);
	return 0;
}