该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
#include
int c[100][100]={-1}; //这个是存储其lcs
char d[100][100]={'-1'}; //辅助读取lcs
void len(char a[100],char b[100])
{
int len1,len2;
len1=strlen(a);
len2=strlen(b);
int index,j;
for(index=0;index<=len1-1;index++)
{
c[index][0]=0;
d[index][0]='0';
}
for(j=0;j<=len2-1;j++)
{
c[0][j]=0;
d[0][j]='0';
}
for(index=0;index<=len1-1;index++)
{
for(j=0;j<=len2-1;j++)
{
if(a[index]==b[j])
{
c[index][j]=c[index-1][j-1]+1;
d[index][j]='E';
}
else if(c[index-1][j]>c[index][j-1])
{
c[index][j]=c[index-1][j];
d[index][j]='u';
}
else
{
c[index][j]=c[index][j-1];
d[index][j]='l';
}
printf("%d,%s",c[index][j],d[index][j]);
}
}
}
double read_lcs(char a[100],int index,int j)
{
double number=0;
if(index==0||j==0)
{
return number;
}
int h=0;
if(d[index][j]='E')
{
number++;
read_lcs(a,index-1,j-1);
}
else if (d[index][j]='u')
{
read_lcs(a,index-1,j);
}
else
{
read_lcs(a,index,j-1);
}
return number;
}
int main()
{
char str1[100];
char str2[100];
int index,j;
double number;
int a,b;
scanf("%s", str1);
scanf("%s", str2);
a=strlen(str1);
b=strlen(str2);
for(index=0;index
{
if(isalpha(str1[index]))
tolower(str1[index]);
}
for(index=0;index
{
if(isalpha(str2[index]))
tolower(str2[index]);
}
len(str1,str2);
number= read_lcs(str1,a,b);
printf("%.3f",number*2/(a+b));
return 0;
}