12.18知识整理

本文介绍了最长公共子序列(LCS)问题,通过实例解释了如何找出两个序列的LCS,并提供了动态规划的解题思路,包括相等元素和不相等元素情况的处理。此外,还提醒在处理char类型数组时的注意事项。
摘要由CSDN通过智能技术生成

今天没啥可整理的,就整理一道题

最长公共子序列
Description

一个给定序列的子序列是在该序列中删除若干元素后得到的序列。确切地说,若给定序列X=<x_1x 1 ,x_2x 2 ,...,x_mx m >,另一序列Z=<z_1z 1 ,z_2z 2 ,...,z_kz k >是X的子序列,是指存一个严格递增的下标序列<i_1i 1,i_2i 2 ,...,i_ki k​ >,使得对于所有j=1,2,...,k有X_{i_j}X i j =Z_jZ j​
 。

例如,序列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的公共自子序列。

最长公共子序列(LCS)问题:给定两个序列X<x_1x 1 ,x_2x2,...,x_mx <z_1z 1,z_2z 2 ,...,z_kz k >,要求找出X和Z的一个公共子序列。
Input

第一行为一个整数n(1≤n≤5000),表示X序列的长度;

第二行为长度n的X序列;

第三行为一个整数m(1≤m≤5000),表示Z序列

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值