最长公共子序列

本文介绍了最长公共子序列的概念,给出了如何确定两个序列的最长公共子序列的算法解析,并详细说明了三种情况下的处理方式,包括递归的解决策略。最后提到了代码实现。
摘要由CSDN通过智能技术生成
问题的描述:

一个给定序列的子序列是在该序列中删去若干元素后得到的序列。

若给定序列X= { x1, x2,…, xm},则另一序列Z= {z1, z2,…, zk}是X的子序列是指存在一个严格递增的下标序列

{i1, i2,…, ik},使得对于所有j=1,2,…,k有 Xij=Zj。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,

相应的递增下标序列为{2,3,5,7}。给定两个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,

称Z是序列X和Y的公共子序列。

例如,若X= { A, B, C, B, D, A, B}和Y= {B, D, C, A, B, A},

则序列{B,C,A}是X和Y的一个公共子序列,序列{B,C,B,A}也是X和Y的一个公共子序列。

而且,后者是X和Y的一个最长公共子序列,因为X和Y没有长度大于4的公共子序列。

给定两个序列X= {x1, x2, …, x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值