本文主要是介绍LCS转为LIS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
(1) 先将所有数列排序。
第一维由小到大,当第一维相等时,第二维由大到小。
(排序规则亦可改成以第二个维度为主,最后则是找第一个维度的1DLIS。)
a a a b b a a a c d
(0,6) (0,3) (0,2) (1,4) (1,1)(2,6) (2,3) (2,2) (3,5) (4,0)
(2) 依序取出第二个维度的数值。
6 3 2 4 1 6 3 2 5 0
(3) 这个序列的1DLIS,对应到数对们的2DLIS。其实也就是一开始要求的LCS。
6 3 2 4 1 6 3 2 5 0
* * *
1D LIS: 2 4 6
2D LIS: (0,2) (1,4) (2,6) (注:第一个维度之前有排序)
LCS : a b a
(4) 简洁的表达方式是:
a b a c d s1字符串
-> { a(6,3,2) b(1,4) a(6,3,2)c(5) d(0) } s1在s2当中出现的位置(由后往前)
-> { 6 3 2 1 4 6 3 2 5 0 } 依序取出第二个维度的数值
-> 2 4 6 LIS
这篇关于LCS转为LIS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!