LCS转为LIS

来源:互联网 发布:淘宝发货时间怎么看 编辑:程序博客网 时间:2024/05/10 17:02

(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

0 0
原创粉丝点击