33,008
社区成员
发帖
与我相关
我的任务
分享
#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;
}