Cod sursa(job #365779)

Utilizator titusuTitus C titusu Data 19 noiembrie 2009 22:32:36
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
//Sa se genereze toate permutarile multimii {1, 2, ...N}, in ordine lexicografica.
#include <cstdio>
using namespace std;

int uz[10], x[10] ,n;
FILE *fout=fopen("permutari.out","w"); 
void back(int k){
 for(int i =1;i<=n;++i)
	 if(!uz[i]){
	 	uz[i] = 1;
		x[k]=i;
		if(k==n){
			for( int j=1;j<=n;++j)
				fprintf(fout,"%d ",x[j]);
			fprintf(fout,"\n");
		}
		else
			back(k+1);
		uz[i] = 0;
	 }
}

void back1(int k){
 for(int i =1;i<=n;i++){
 	x[k]=i;
	int ok=1;
	for(int j=1 ; j<k && ok ; j++)
		if(x[j] ==x[k])
			ok=0;
	if(ok)
		if(k==n){
			for(int j = 1;j<=n;j++)
				fprintf(fout,"%d ",x[j]);
			fprintf(fout,"\n");
		}
		else
			back(k+1);
 }
}
int main(){
	FILE  *fin = fopen("permutari.in","r");
	fscanf(fin,"%d",&n);
	fclose(fin);
	back(1);
	return 0;
}