Cod sursa(job #228795)

Utilizator razyelxrazyelx razyelx Data 8 decembrie 2008 00:09:46
Problema Generare de permutari Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
  #include <stdio.h>  
  int st[100],k,n,as,ev;  
    
    
  void init(){  
      st[k] = 0;  
  }  
  int sol(){  
      return n==k;  
  }  
  int valid(){  
     for(int i = 1; i < k; i++)  
          if (st[k] == st[i]) return 0;  
      return 1;  
  }  
  int succ(){  
      if (st[k]<n){st[k]++;return 1;}  
       else return 0;  
   }  
     
   void pt(){  
     
       FILE*out = fopen("permutari.out","w");  
       for(int i=1; i<=k; i++)  
           fprintf(out, "%d\n", st[i]);  
   }  
   void bt(){  
       k = 1;  
       init();  
       while (k){  
           as = 1;  
           ev = 0;  
          while (as && !ev){  
               as = succ();  
               if(as)ev = valid();  
     
           }  
           if (as){  
               if(sol())  
                   pt();  
               else{  
                   k++;  
                   init();  
               }  
     
           }else{  
               k--;  
       
           }  
       }  
   }  
   int main(){  
     
       FILE*in  = fopen("permutari.in","r");  
       fscanf(in,"%d",&n);  
       bt();  
       return 0;  
  }