算法设计与分析实践-作业9-LCS
1. 问题
2. 解析
如上图所示,Zk就是我们所要求出的最大公共子序列。
那么,有以下三种情况:
分别对两种情况(情况二与情况三类似)举例一下以便于理解:
我们可以用数学语言来表示:
3. 设计
算法1:
for i =1 to m
for j=1 to n
这个算法是求出最长公共子序列的长度,但是在求的过程中对删除的节点标记,以便下一个算法回溯。
算法2:
回溯算法:
举个例子以便于理解:
4.分析:
两重循环,故时间复杂度为O(mn)
5. 源码
https://github.com/Ericjin1022/-suanfa