用c++语言写一个最长公共子序列的代码
时间: 2023-06-09 14:08:16 浏览: 99
c++语言写最长公共子序列问题
下面是一个简单的最长公共子序列的 C 语言代码:
```
#include <stdio.h>
#include <string.h>
#define max(x,y) ((x)>(y))?(x):(y)
void find_lcs(char *a, char *b, char *c)
{
int la=strlen(a), lb=strlen(b);
int f[la+1][lb+1],i,j;
memset(f,0,sizeof(f));
for(i=1;i<=la;i++)
for(j=1;j<=lb;j++)
if(a[i-1]==b[j-1])
{
f[i][j]=f[i-1][j-1]+1;
c[f[i][j]-1]=a[i-1];
}
else
f[i][j]=max(f[i-1][j],f[i][j-1]);
}
int main()
{
char a[]="abcde", b[]="ace";
char c[256]={0};
find_lcs(a,b,c);
printf("Longest common subsequence is %s\n",c);
return 0;
}
```
注意:以上代码实现了两个字符串的最长公共子序列的查找,并将结果存储在字符数组 c 中。重点是,我们使用了一个二维数组 f 来代替递归方法来寻找最长公共子序列。
阅读全文