请问个 最长公共子序列 问题

oiy37215 2011-12-17 12:12:46
#include <iostream>
using namespace std;
int Max(int x,int y)
{
return x>y ? x : y ;
}
void maxLen(char* X,char* Y,int I,int J)
{
int** M=new int*[I];
int Len=0;
int i,j;
for(int num=0;num<I;num++)
M[num] = new int[J];

for(int i=0;i<I;i++)
M[i][0]=0;

for(int j=0;j<J;j++)
M[0][j]=0;

for(i=1;i<I;i++)
for(j=1;j<J;j++)
{
if(X[i]=Y[j])
M[i][j]=M[i-1][j-1]+1;
else
M[i][j]=Max(M[i-1][j],M[i][j-1]);
}

cout << M[I-1][J-1] << endl;

for(int num=0;num<I;num++)
delete []M[num];
delete[]M;
M=0;
}
int main()
{
char X[7]={'A','B','C','B','D','A','B'};
char Y[7]={'B','D','C','A','B','A'};
maxLen(X,Y,7,6);
/*int *m;
m=new int[3];
for (int i=0;i<3;i++)
{m[i]=i;cout << m[i];}
*/
// cout << Max(3,4);
return 0;
}


结果等于5是什么意思??
...全文
139 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
i_love_ai 2011-12-19
  • 打赏
  • 举报
回复
强,最容易犯的错误最容易被忽略。
ohmygirl 2011-12-19
  • 打赏
  • 举报
回复
而且循环求最长子序列的那部分代码是错误的。应该从0开始求。

改下代码:

#include <iostream>
using namespace std;
int Max(int x,int y){
return x>y ? x : y ;
}
void maxLen(char* X,char* Y,int I,int J){
int** M=new int*[I+1];
int Len=0;
int i,j;
for(int num=0;num<=I;num++)
M[num] = new int[J+1];

for(i=1;i<=I;i++)
M[i][0]=0;

for(j=1;j<=J;j++)
M[0][j]=0;

for(i=1;i<=I;i++)
for(j=1;j<=J;j++){
if(X[i]==Y[j])
M[i][j]=M[i-1][j-1]+1;
else
M[i][j]=Max(M[i-1][j],M[i][j-1]);//这样写只能求出长度,无法构建子串序列
}

cout << M[I][J] << endl;

for(int num=0;num<I;num++)
delete []M[num];
delete[]M;
M=0;
}
int main(){
char X[8]={'s','A','B','C','B','D','A','B'};//X[0]是不参与的
char Y[8]={'s','B','D','C','A','B','A'};//Y[0]是不参与的
maxLen(X,Y,7,6);
//system("pause");
return 0;
}
ohmygirl 2011-12-19
  • 打赏
  • 举报
回复
char X[7]={'A','B','C','B','D','A','B'};
char Y[7]={'B','D','C','A','B','A'};
子序列的定义是:某个串去掉若干个字符后剩余的字符串(可以不连续)

最长公共子序列就是两个串都有的的最长 的子序列。

这样来看,最长应该是4

你的代码中有一个明显的错误:if(X[i]=Y[j])

这个应该是if(X[i] == Y[j])
i_love_ai 2011-12-18
  • 打赏
  • 举报
回复
好像是找两个数组中有多少相同的字母?
oiy37215 2011-12-17
  • 打赏
  • 举报
回复
没人知道吗

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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