题目
给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。
比如字符串1:BDCABA;字符串2:ABCBDAB
则这两个字符串的最长公共子序列长度为4,最长公共子序列是:BCBA
思路
参考这篇博客
https://blog.csdn.net/hrn1216/article/details/51534607
代码如下:
#include<iostream>
#include<cstring>
#define MAX_LEN 100
using namespace std;
char x[MAX_LEN];
//两个子序列
char y[MAX_LEN];
int xLen=0;
//两个子序列的长度
int yLen=0;
char z[MAX_LEN];
//保存最长公共子序列
int c[MAX_LEN][MAX_LEN];
//记录LCS[i][j] 的个数
void getLCS()
{
//构造二维表
for(int i=0; i<=xLen; i++)
{
for(int j=0; j<=yLen; j++)
{
if(i==0||j==0)
{
c[i][j]=0;
}
else if(i>0&&j>0&&x[i]==y[j])
{
c[i][j]=c[i-1][j-1]+1;
}