#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define MAX 100
int max(int a,int b)
{
if(a>=b)
return a;
else
return b;
}
int main()
{
//LCS可以进行简单的文本相似度测量
char *s1,*s2;
s1=(char *)malloc(sizeof(char)*MAX);
s2=(char *)malloc(sizeof(char)*MAX);
while((scanf("%s",s1))!=EOF)
{
getchar();
scanf("%s",s2);
int s1_length=strlen(s1);
int s2_length=strlen(s2);
int **LCS;
LCS=(int **)malloc(sizeof(int *)*MAX);
int i;
int s1_index,s2_index;
for(i=0;i<MAX;i++)
LCS[i]=(int *)malloc(sizeof(int)*MAX);
for(s1_index=0;s1_index<=s1_length;s1_index++)
LCS[s1_index][0]=0;
for(s2_index=0;s2_index<=s2_length;s2_index++)
LCS[0][s2_index]=0;
for(s1_index=1;s1_index<=s1_length;s1_index++)
{
for(s2_index=1;s2_index<=s2_length;s2_index++)
{
if(s1[s1_index-1]==s2[s2_index-1])
LCS[s1_index][s2_index]=LCS[s1_index-1][s2_index-1]+1;
else
LCS[s1_index][s2_index]=max(LCS[s1_index-1][s2_index],LCS[s1_index][s2_index-1]);
}
}
printf("%d\n",LCS[s1_length][s2_length]);
}
return 0;
}
最长公共子序列
最新推荐文章于 2024-07-20 22:14:11 发布