- 问题分析:最长公共子序列的求解:问题描述:最长公共子序列(LCS)是一个在一个序列集合中(通常为两个序列)用来查找所有序列中最长子序列的问题。一个数列,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则称为已知序列的最长公共子序列。
- 要求:给定两个序列,设计算法求出这两个序列的最长公共子序列是什么。
- 解决方案:最长公共子序列问题是属于动态规划的一部分,我们首先来举一个例子用来解决最长子序列问题:求长为m的序列和长为n的序列的最长公共子序列(可以不连续),如ABCBDAB和BDCABA,BCAB和BCBA都是它们的最长公共子序列。其中用到了数据结构和c语言等知识。
#include<stdio.h> #include<string.h> char a[500],b[500]; char num[501][501]; ///记录中间结果的数组 char flag[501][501]; ///标记数组,用于标识下标的走向,构造出公共子序列 void LCS(); ///动态规划求解 void getLCS(); ///采用倒推方式求最长公共子序列 int main() { int i; strcpy(a,"ABCBDAB"); strcpy(b,"BDCABA"); memset(num,0,sizeof(num)); memset(flag,0,sizeof(flag));
完成最长公共子序列的求解
最新推荐文章于 2023-01-21 23:00:00 发布
本文探讨了最长公共子序列(LCS)问题,解释了问题描述及解决思路。通过一个实例展示了如何使用动态规划方法解决两个序列的LCS问题,涉及到的数据结构和编程语言为C++。
摘要由CSDN通过智能技术生成