为什么result输不出来?

guozhenfeilaier 2008-07-30 08:44:16
结果中的result 为什么输不出来?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void longestcommonSubsequence(char*a,char*b,char*result)
{
int **d;
int m=strlen(a),n=strlen(b);
int i,j,len;
d=(int**)malloc(sizeof(int*)*(m+1));
for(i=0;i<=m;i++)
{
d[i]=(int*)malloc(sizeof(int)*(n+1));
}
for(i=0;i<=m;i++)
{
d[i][0]=0;
}
for(j=0;j<=n;j++)
{
d[0][j]=0;
}
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
if(a[i-1]==b[i-1])
{
d[i][j]=d[i-1][j-1];
}
else if(d[i][j-1]<=d[i-1][j])
{
d[i][j]=d[i-1][j];
}
else
{
d[i][j]=d[i][j-1];
}
}
}
len=d[m][n];
result[len]='\0';
i=m;j=n;
while(i!=0 && j!=0)
{
if(a[i-1]==b[j-i])
{
result[--len]=a[i-1];
i--;j--;
}
else if(d[i][j-1]<=d[i-1][j])
{
i--;
}
else
{
j--;
}
}
for(i=0;i<=m;i++)
{
free(d[i]);
}
free(d);
}
#define MAX_LEN 100
int main(void)
{
int *a="abcd",*b="xbadz";
int result[MAX_LEN+1];
longestcommonSubsequence(a,b,result);
printf("a:%s\nb:%s\nresult:%s\n",a,b,result);
system("pause");
return 0;
}
...全文
127 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsblue 2008-07-31
  • 打赏
  • 举报
回复
m=strlen(a),n=strlen(b); 中在int *a= "abcd ",*b= "xbadz "; 里没有加“\0”m=strlen(a),n=strlen(b); 中m,n的值不对啊
eyf0917 2008-07-31
  • 打赏
  • 举报
回复

不知道楼主的这个程序要完成什么样的功能??
另外,程序中关键,我相信是二维数组d的值,而在这个程序中,你对d的赋值全成0,以至使
后面对result进行赋值时无法进行的结果.没有对result进行赋值,所以打印出来的全是中文乱码

依我所想,要想这个程序正确,要么改变对数组d的赋值(最可能的错误),要么改变result 赋值的算法!!
linzsoft 2008-07-31
  • 打赏
  • 举报
回复
楼主想要找到最长的共有子字符串?能注释一下代码吗?
K行天下 2008-07-30
  • 打赏
  • 举报
回复
算法不对 你是要找最长字串吧!
iu_81 2008-07-30
  • 打赏
  • 举报
回复
len=d[m][n];
len为0
ttkk_2007 2008-07-30
  • 打赏
  • 举报
回复
你result是int [],形参却是char *
zhongyuanceshi 2008-07-30
  • 打赏
  • 举报
回复
代码不规范,看起来好累

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧