#include<stdio.h>
#include<string.h>
int m[1000][1000];
char* LCS(char *x,char *y)
{
int i,j,LCS_MAXLEN=0,lx,ly,Pos_x;
for(i=1,lx=strlen(x),ly=strlen(y); i<=lx; i++)
for(j=1; j<=ly; j++)
{
if(x[i-1]==y[j-1])
{
m[i][j]=m[i-1][j-1]+1;
if(m[i][j]>LCS_MAXLEN)
{
LCS_MAXLEN=m[i][j];
Pos_x=i-1;
}
}
else m[i][j]=0;
}
char *LCS_String=(char *)malloc(LCS_MAXLEN+1);
int index=LCS_MAXLEN-1;
while(index>=0)
{
LCS_String[index]=x[Pos_x];
Pos_x--;
index--;
}
LCS_String[LCS_MAXLEN]='\0';
return LCS_String;
}
int main()
{
char A[]="XMADAMYX",B[]="XYMADAMX";
printf("%s\n",LCS(A,B));
return 0;
}