@(C Plus Plus)
最长公共子序列
前天看邹博关于最长公共子序列的问题,公式很好推导,但是实现起来没那么容易,我是用的最简单的方式,设置两个二维数组,一个用来记录子序列的长度,一个来记录方向。开始的时候把下标搞混了,结果总是不对,最后好不容易修改好了。
全部的代码如下:
1 | #include <iostream> |
程序有很大的局限性,另外,我没想到如何解决多解的问题。
最后求解LIS(最长递增子序列),把原序列排序后,用作保证递增的标准。然后求解两个序列的最长公共子序列,就可以求出最长递增子序列了。
现在还有的问题是:
- 避免使用方向数组b
- 多解问题。