Cod sursa(job #217732)

Utilizator dReaMerAndrei Sofian dReaMer Data 30 octombrie 2008 08:56:21
Problema Generare de permutari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<iostream.h>
#include <math.h>

int st[100];
int n,k,ev,as;


inline void init (){
	st[k]=0;
}

inline int succesor (){
	if (st[k]<n){
		st[k]=st[k]+1;
		return 1;
	}
	 else return 0;
}

int valid (){
	int i;
	for(i=1;i<k;i++)
	  if (st[k]==st[i]) return 0;
	return 1;
}

inline int solutie(){
	return k==n;
}

void tipar (){
	int i;
	for(i=1;i<=n;i++)
		cout<<st[i]<<" ";
 cout<<endl;
}

void bt(){
	k=1;
	init();
	while (k>0){
		as=1;
		ev=0;
		while(as && !ev){
			as=succesor();
			if(as) 
				ev=valid();
		}
    if(as)
		if (solutie()) tipar();
		  else {k++; init();}
    else k--;
	}
}

int main(){
	freopen("permutari.in","r",stdin);
	freopen("permutari.out","w",stdout);
	cin>>n;
	bt();
	return 0;
}