64,639
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <string>
using namespace std;
int** Lcs_Length(string X,string Y)
{
int m=X.length();
int n=Y.length();
//int b[7][7];
int** b;
b=new int*[7];
for(int i=0; i<7; i++)
b[i]=new int[7];
int c[7][7];
for(int i=1;i<m;i++)
c[i][0] = 0;
for(int j=0;j<n;j++)
c[0][j]=0;
for(int i=1;i <m;i++)
{
for(int 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;
}
}
}
return b;
}
int Print_Lcs(int **b, string X, int i, int j)
{
return 0;
}
int main()
{
string X("xzyzzyx");
string Y("zxyyzxz");
int i = X.length();
int j = Y.length();
Print_Lcs( Lcs_Length(X,Y),X,i,j);
return 0;
}
int** Lcs_Length(string X,string Y)
{
int m = X.length();
int n = Y.length();
int b[7][7];
int c[7][7];
for(int i=1;i <m;i++)
c[i][0] = 0;
for(int j=0;j <n;j++)
c[0][j] = 0;
for(int i=1;i <m;i++)
{
for(int 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;
}
}
}
return **b;
}
int Print_Lcs(int **b,string X,int i,int j){}
int main()
{
string X = ("xzyzzyx");
string Y = ("zxyyzxz");
int i = X.length();
int j = Y.length();
Print_Lcs( Lcs_Length(X,Y),X,i,j);
return 0;
}