Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define N 3
- int m[2*N];
- int nr_apeluri;
- int nr_solutii;
- FILE *f;
- void completeaza_opt(int i,int j)
- {
- int x,y,z;
- nr_apeluri++;
- if(i==2*N){
- for(x=0;x<2*N-j;x++)
- if(m[x]!=m[x+j])
- return;
- // Solutie este corecta - scrie in fisier
- fprintf(f,"Solutia %d\n",++nr_solutii);
- for(y=0;y<2*N;y++){
- fprintf(f,"%3d",m[y]);
- fprintf(f,"\n");
- }
- fprintf(f,"\n");
- return;
- }
- // Determina elementul urmator in matrice
- // Completeaza elementul curent cu toate valorile posibile si apeleaza
- // recursiv procedura de completare pentru finalizarea matricii
- for(z=0;z<N;z++)
- {
- m[i]=z;
- completeaza_opt(i+1,j);
- }
- }
- int main(void)
- {
- int i;
- f=fopen("solutii.txt","w");
- for(i=0;i<N;i++)
- {
- printf("V[%d]: ",i);
- scanf("%d",&m[i]);
- }
- nr_solutii=nr_apeluri=0;
- completeaza_opt(0,2);
- for(i=0;i<2*N;i++)
- printf("%d ",m[i]);
- printf("Numar de solutii gasite (opt): %d\n",nr_solutii);
- printf("Numar de apeluri recursive (opt): %d\n",nr_apeluri);
- fclose(f);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement