Cod sursa(job #217763)

Utilizator dReaMerAndrei Sofian dReaMer Data 30 octombrie 2008 10:02:40
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include<stdio.h>  
int st[9],n,i,k;  
    void init(){  
	st[k]=0;  
}  
int succesor(){  
	if(st[k]<n){  
        st[k]++;  
		return 1;  
	}  
       return 0;  
   }  
  int valid(){  
       for(i=1;i<=k-1;++i)  
           if(st[k]==st[i])  
             return 0;  
       return 1;  
   }  
   int solutie(){  
       return (k==n);  
   }  
   void tipar(){  
      for(i=1;i<=n;++i)  
           printf("%d ",st[i]);  
       printf("\n");  
 }  
   void bkt(){  
       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);  
     scanf("%d",&n);  
    bkt();  
    fclose(stdin);  
     fclose(stdout);  
	return 0;  
 }