问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求问c语言最长公共子序列代码哪里错了!!! 搞了好久,头晕了都。 感觉是对的,就是不行。。。

发布网友 发布时间:2022-05-19 03:26

我来回答

2个回答

热心网友 时间:2022-05-19 04:56

楼主你好。
#include<stdio.h>
void LCSLength(int m,int n,char *x,char *y,int c[8][7],int b[8][7])
{
int i,j;
//下面两行不怎么需要,因为已经初始化为0了
for(i=0;i<m;i++) c[i][0]=0;//注意应该是从0到m-1
for(i=0;i<n;i++) c[0][i]=0;
for(i=1;i<m;i++){//这里注意应该是从1到m-1
for(j=1;j<n;j++){
if(x[i]==y[j]){
c[i][j]=c[i-1][j-1]+1;
b[i][j]=1;
}else if(c[i-1][j]>=c[i][j-1]){
c[i][j]=c[i-1][j];
b[i][j]=2;
}else {
c[i][j]=c[i][j-1];
b[i][j]=3;
}
}
}
}
void printMatrix(int matrix[8][7]){
int i,j;
for(i=0;i<8;i++){
for(j=0;j<7;j++){
printf("%d ",matrix[i][j]);
}
printf("\n");
}
}
void LCS(int i,int j,char *x,int b[8][7] )
{
if(i==0||j==0) return;
if(b[i][j]==1){
LCS(i-1,j-1,x,b);
printf("%c\n",x[i]);
}else if(b[i][j]==2){//这里注意是==,不是=
LCS(i-1,j,x,b);
}else{
LCS(i,j-1,x,b);
}
}
int main()
{
int c[8][7]={{0}};
int b[8][7]={{0}};
char X[8]={' ','A','B','C','B','D','A','B'};
char Y[7]={' ','B','D','C','A','B','A'};
LCSLength(8,7,X,Y,c,b);
printf("Matrix c\n");
printMatrix(c);
printf("Matrix b\n");
printMatrix(b);
printf("最大公共子序列长度为%d\n",c[7][6]);
LCS(7,6,X,b);
return 1;
}

你运行一下我的代码,没问题的。代码中出现的问题我以注释的形式写出来了。
不过劝告楼主,以后写代码一定要多写一些注释。因为一般的程序员都能写出机器能读懂的代码,而高级程序员才能写出人也能读懂的代码。写注释很重要,显示出代码的思路。否则思路不清晰的高深代码,一开始只有原作者和上帝能懂,过一段时间就只有上帝能懂了。
如果还有问题可以再问。

热心网友 时间:2022-05-19 06:14

你这个会报错的吧 应该是数组 越界
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
if(x[i]==y[j])
{c[i][j]=c[i-1][j-1]+1;b[i][j]=1;}
else if(c[i-1][j]>=c[i][j-1])
{c[i][j]=c[i-1][j];b[i][j]=2;}
else {c[i][j]=c[i][j-1];b[i][j]=3;}
}
这里你的数组大小 为 c[m][n]那么行序是 0~m-1 列序是 0~n-1 你这里的i<=m j<=n
当i=m 时或 j=n时 就会越界
希望可以帮到你!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
王卡专属免流包是什么意思 腾讯王卡专属流量是什么意思 人防临空墙排烟机房可以留洞吗? 瑞士转机的问题? 雅阁、第九代凯美瑞、迈腾,大空间的中级车推荐 云顶之弈双人排位介绍 金铲铲之战 金铲铲段位相差多少可以一起打? 现在上海办理居住证需要本人去吗 34周加5天是几个月 孕34周是几个月了 孕34周如何预防早产 工行信用卡申请十五万元发卡只有五万元信用额度 猪肚鸡汤是广东的特色吗?面欲家的猪肚鸡汤面好吃吗? 蚝油的计量单位是什么,全靠甩? 什么是价格下行压力啊? 薄盐蚝油和财神蚝油的区别 哪几种食品设计,简直时侮辱人类智商的存在呢? 描写夏天的锦文佳段 描写夏天的好句好段,句10句,段5段 描写夏天的语段 描写夏天情景的段落 找描写夏天的语段有哪些 请问这个透明珠子干燥剂有没有毒? 衣服袋里纸包里白色的小珠子是什么,好像是干燥剂,但是白色的,问一下有毒吗 白色珠珠的干燥剂食用了有毒吗 oppo r11不是说有游戏勿扰模式吗 某人我喜欢你的繁体字 江西城市学院机电一体化毕业属于什么学历 我是江西的,今年机电一体化专业毕业,目前工作不久,想自考电气自动化专业本科文凭,请问要考哪几门? 江西樟树农业职业技术学院主的机电一体化怎么样,好不好,可以去学吗 江西什么学校学机电一体化比较好? 工伤单位赔偿标准 晚上梦见妈妈生孩子了是个女孩生完就站起来了还很快长大了呢 睡梦妈妈生妹妹是什么含义.? 职工工伤期间对单位有赔偿吗 去办个手机深圳通能用支付宝吗? 支付宝可以充深圳通吗 美的变频空调哪个系列好? 如何向公司提出备用金 快递如果放在驿站丢失了的话你会怎么解决? 为什么我用QQ影音合并的视频,画面跟声音不对上?到底应该用哪个合并软件好? 笔记本电池拆了用,对笔记本有什么损害 把笔记本电池拆了,光用插头插在交流电上,对笔记本啊有影响,求高手解析... 将笔记本电脑的电源线拔掉,电池拆掉关机后按开机键放电有什么用啊? 电子申报系统增值税申报表有误应如何修改 还在报税申报期,国税报表错了怎么修改。本月的财务报表错了,*已经报了,涉及利润,可以作废吗? 为什么苹果11微信不能发微视视频? 关于最长公共子序列,C&#47;C++实现,请帮忙调试,我是真的不知道哪里错了.&lt;算法导论&gt;P211,输出是那个图. 除了nubia还有什么手机可以拍星星 哪个牌子的手机拍照效果好特别是夜景,能把夜空上的星星月亮拍清楚的,现在用NOTe2感觉不给力啊。 ()()残暴成语