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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值