Python最長共通サブシーケンスの実現-動的計画方法


# -*- coding:utf-8 -*-
__author__ = 'yangxin_ryan'


class LongestCommonSubsequence(object):

    def lcs(self, s1, s2):
        """
             ,           ,
          0     
          1     
          2               (    )
          3               (    )
             
              
        :param s1:
        :param s2:
        :return:
        """
        size1 = len(s1) + 1
        size2 = len(s2) + 1
        #       ,  ,        ( 0  )
        data_path = [[["", 0] for j in list(range(size2))] for i in list(range(size1))]
        for i in list(range(1, size1)):
            data_path[i][0][0] = s1[i - 1]
        for j in list(range(1, size2)):
            data_path[0][j][0] = s2[j - 1]
        print("init data ...")
        print(data_path)
        for i in list(range(1, size1)):
            for j in list(range(1, size2)):
                if s1[i - 1] == s2[j - 1]:
                    data_path[i][j] = ['↖', data_path[i - 1][j - 1][