Cod sursa(job #285105)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 22 martie 2009 13:00:21
Problema Subsir Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.9 kb
#include<stdio.h>
#include<string.h>
#define dim 1024
int a[dim],b[dim],v[dim][dim],nr[dim],x,n,m,i,k;
void read()
{
     char q[501];
     gets(q);
     n=strlen(q);
     for(i=0;i<n;i++)
     a[i+1]=q[i]-'a';
     gets(q);
     m=strlen(q);
     for(i=0;i<m;i++)
     b[i+1]=q[i]-'a';

}
int max(int x,int y)
{
    if(x>y)
    return x;
    return y;
}
void fill()
{
     for(i=1;i<=n;i++)
     for(k=1;k<=m;k++)
     {
                      if(a[i]==b[k])
                      v[i][k]=v[i-1][k-1]+1;
                      else
                      v[i][k]=max(v[i-1][k],v[i][k-1]);
                      }
}
/*void find ()
{
     for(i=n,k=m;i>=1 && k>=1;i++,i--)
    {
                      if(a[i]==b[k])
                      {
                                    nr[x++]=a[i];
                                    i--;
                                    k--;
                                    continue;
                                    }
                      if(v[i-1][k]>v[i][k-1])
                      i--;
                      else
                      k--;
                      }
printf("%d\n",--x);
for(i=x;i>=1;i--)
printf("%d ",nr[i]);
return ;
}*/
void find()
{
     int max=v[n][m],nr=0;
     for(i=1;i<n;i++)
     for(k=1;k<m;k++)
     if(v[i][k]==max-1 && v[i][k+1]!= max && v[i+1][k+1]==max)
     nr++;
     printf("%d\n",nr);
}
void afis()
{
     printf("\n");
     for(i=1;i<=m;i++)
     printf("%d ",b[i]);
      printf("\n");
     for(i=1;i<=n;i++,printf("\n"))
    {
                          printf("%d ",a[i]);     for(k=1;k<=m;k++)
                           
     printf("%d ",v[i][k]);
  
     }   printf("\n");
}
void solve()
{
     freopen("subsir.in","r",stdin);
     freopen("subsir.out","w",stdout);
     
     read();
     fill();
     find();
   //  afis();
}
int main ()
{
    x=1;
    solve();
return 0;
}