Cod sursa(job #217760)

Utilizator dReaMerAndrei Sofian dReaMer Data 30 octombrie 2008 09:58:24
Problema Generare de permutari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<iostream.h>
int st[9];
int n,k,ev,as;

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

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

int valid (){
	int i;
	for(i=1;i<=k-1;++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(){  
   int as;  
    k=1;  
    init();  
    while(k>0){  
        do{}while((as=succesor())&&!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;
}