Cod sursa(job #184233)

Utilizator zbarniZajzon Barna zbarni Data 23 aprilie 2008 12:32:10
Problema Subsir Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<fstream>
#include<string>
#define g 1025
using namespace std;
int c[g][g]={0},n,m;
ifstream be ("subsir.in");
ofstream ki ("subsir.out");
void read (char a[], char b[], int &n, int &m)
 {
  int i;
  be.getline(a,500,'\n');
  be.getline(b,500,'\n');
  n=strlen(a);
  m=strlen(b);
  be.close();
 }

int program (char a[], char b[])
 {
  int i,j,sz=0;
  for (i=n-1;i>=0;i--)
    for (j=m-1;j>=0;j--)
       if (a[i]==b[j])
	 c[i][j]=c[i+1][j+1]+1;
       else
	  if (c[i][j+1]>c[i+1][j])
	    c[i][j]=c[i][j+1];
	  else
	    c[i][j]=c[i+1][j];
  for (i=0;i<n;i++)
     for (j=0;j<m;j++)
       {
	if (i==0 && j==0)
	  ;
	else
	  if (c[i][j]==c[0][0] && c[i][j+1]!=c[0][0] && c[i+1][j]!=c[0][0])
	    sz++;
       }
  return sz;
 }

/*void road (int a[], int b[])
 {
  int i=1,j=1,sz=0;
    while (i<=n && j<=m)
	if (a[i]==b[j])
	  { ki<<a[i]; sz++;
	    if (sz<c[1][1])
	      ki<<" "; i++; j++; }
	else
	  if (c[i][j+1]==c[i][j])
	    j++;
	  else
	    i++;
 }*/


int main()
 {
  char a[g]={0},b[g]={0};
  read (a,b,n,m);
  ki<<program (a,b);
  ki<<"\n";
  ki.close();
  return 0;
 }