|
# include <stdio.h>
# include <string.h>
# define N 100
char a[N],b[N],str[N];
int lcs_len(char *a, char *b, int c[][N])
{ int m=strlen(a), n=strlen(b), i,j;
for (i=0;i<=m;i++) c[0]=0;
for (j=0;j<=n;j++) c[0][j]=0;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
if (a[i-1]==b[j-1])
c[j]=c[i-1][j-1]+1;
else if (c[i-1][j]>=c[j-1])
c[j]=c[i-1][j];
else
c[j]=c[j-1];
return c[m][n];
}
char *buile_lcs(char s[],char *a, char *b)
{ int k, i=strlen(a), j=strlen(b),c[N][N];
k=lcs_len(a,b,c);
s[k]='\0';
while (k>0)
if (c[j]==c[i-1][j]) i--;
else if (c[j]==c[j-1]) j--;
else { s[--k]=a[i-1]; i--; j--; }
return s;
}
void main()
{ printf ("Enter two string(<%d)!\n",N);
scanf("%s%s",a,b);
printf("Lcs=%s\n",build_lcs(str,a,b));
}
问题:请问如果输入字符串:asdfghj 和字符串: sdf 程序回输出什么样的结果?为什么??? 我在Turboc中调试的时候如果输入字符串:asdfghj 和字符串:sdf后运行的结果是:Lcs= (就是说对build_lcs函数的调用没起到作用).当然在编译和连接是都是正确的.哪为高手帮帮忙,谢谢!! |
|