Cod sursa(job #1041536)

Utilizator WictorTTimoftii Victor WictorT Data 25 noiembrie 2013 21:58:13
Problema Cel mai lung subsir comun Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
 #include<stdio.h> 
 #define int1 1030
   void G(int,int,int) ;
   int a[int1],b[int1],c[int1],m,i,n,max ; FILE *f ;
  main(){ 
   f=fopen("cmlsc.in","r") ; fscanf(f,"%d%d",&m,&n) ; 
    for (i=1 ; i<=m ; i++) fscanf(f,"%d",&a[i]) ; 
     for (i=1 ; i<=n ; i++) fscanf(f,"%d",&b[i]) ; fclose(f) ; 
     f=fopen("cmlsc.out","w") ;
      G(m,n,0) ; 
     for (i=max-1 ; i>=0 ; i--) fprintf(f,"%d ",c[i]) ; 
        fclose(f) ;
      return 0 ; 
  }
   void G(int x ,int y ,int l) {  
     if ((x!=0) || (y!=0)) { if (l>max) max=l ; 
    if (a[x]==b[y]) {c[l]=a[x] ; G(x-1,y-1,l+1) ; } else
     { if (x>y) G(x-1,y,l) ; if (x<y) G(x,y-1,l) ; 
       if (x==y) { G(x-1,y,l) ; G(x,y-1,l) ; } } } ; }