算法精解:最长公共子序列

最长公共子序列(LCS)是指存在于两个或多个序列中的最长子序列,但不需连续。通过二维数组L[m+1][n+1]记录其长度迭代过程,可以找到序列X和Y的LCS。在示例中展示了LCS的矩阵表示,用于计算和存储不同位置的子序列长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最长公共子序列,英文缩写为LCS(Longest Common Subsequence)。
其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,
且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。
而最长公共子串(要求连续)和最长公共子序列是不同的

设序列 X 存储在数组 x[m]中,序列 Y 存储在数组 y[n]中, 二维数组 L[m+1][n+1]
存储最长公共子序列的长度的迭代过程, S[ m + 1] [n + 1]存储相应的状态, 最长公共子
序列存储在数组 z[ k]中

int CommonOrder(int m, int n, int x[ ] , int y[ ] , int z[ ])
{
	int i , j , k ; 
	for (j = 0; j <= n; j ++ ) // 初始化第 0 行
		L[0][j] = 0;
	for (i = 0; j <= m;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Engineer-Bruce_Yang

谢谢您

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值