我写的这个能正确求出最长序列元素个数但是输出的最长序列却是乱码,求大神指教。代码如下:
#include
#include
#include
#define MAX 101
int Long(char a[],char b[],char result[] )
{
int m,n;
m=strlen(a);
n=strlen(b);
int str[MAX][MAX];
int i,j,sum;
for(i=0;i<=m;i++)
{
str[i][0]=0;
}
for(i=0;i<=n;i++)
{
str[0][i]=0;
}
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
if(a[i-1]==b[j-1])
{
str[i][j]=str[i-1][j-1]+1;
}
else if(str[i-1][j]<str[i][j-1])
{
str[i][j]=str[i][j-1];
}
else
{
str[i][j]=str[i-1][j];
}
}
}
sum=str[m][n];
return sum;
result[sum]='\0';
while(sum>=1)
{
if(a[m-1]==b[n-1])
{
result[--sum]=a[m-1];
m--;
n--;
}
else if(str[m-1][n]<str[m][n-1])
{
n--;
}
else
{
m--;
}
}
}
int main(void)
{
char a[MAX],b[MAX];
char result[MAX];
int i;
printf("请输入数组a:\n");
gets(a);
printf("请输入数组b:\n");
gets(b);
Long(a,b,result);
printf("%d\n",Long(a,b,result));
printf("%s",result);
system("PAUSE");
return 0;
}