Advertisement
Guest User

Untitled

a guest
May 25th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.08 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #define     N   3
  4.  
  5. int     m[2*N];
  6.  
  7. int     nr_apeluri;
  8. int     nr_solutii;
  9.  
  10. FILE        *f;
  11.  
  12. void completeaza_opt(int i,int j)
  13. {
  14.     int     x,y,z;
  15.    
  16.     nr_apeluri++;
  17.     if(i==2*N){
  18.         for(x=0;x<2*N-j;x++)
  19.             if(m[x]!=m[x+j])
  20.                 return;
  21.         // Solutie este corecta - scrie in fisier
  22.         fprintf(f,"Solutia %d\n",++nr_solutii);
  23.         for(y=0;y<2*N;y++){
  24.             fprintf(f,"%3d",m[y]);
  25.             fprintf(f,"\n");
  26.             }
  27.         fprintf(f,"\n");
  28.         return;
  29.         }
  30.        
  31.     // Determina elementul urmator in matrice
  32.        
  33.     // Completeaza elementul curent cu toate valorile posibile si apeleaza
  34.     //  recursiv procedura de completare pentru finalizarea matricii
  35.     for(z=0;z<N;z++)
  36.         {
  37.             m[i]=z;
  38.             completeaza_opt(i+1,j);
  39.         }
  40. }
  41.  
  42. int main(void)
  43. {
  44.     int i;
  45.     f=fopen("solutii.txt","w");
  46.     for(i=0;i<N;i++)
  47.     {
  48.         printf("V[%d]: ",i);
  49.         scanf("%d",&m[i]);
  50.     }
  51.     nr_solutii=nr_apeluri=0;
  52.     completeaza_opt(0,2);
  53.     for(i=0;i<2*N;i++)
  54.         printf("%d ",m[i]);
  55.     printf("Numar de solutii gasite (opt):    %d\n",nr_solutii);
  56.     printf("Numar de apeluri recursive (opt): %d\n",nr_apeluri);
  57.    
  58.     fclose(f);
  59.     return 1;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement