Самая длинная общая подпоследовательность (Dynami c Programming) в Python - PullRequest
0 голосов
/ 28 апреля 2020

Я написал следующий код для этой проблемы, но он не работает в тестовом примере text1 = 'abcde', text2 = 'ace'. Мой ответ идет как 2, а правильный ответ 3


class Solution:
    def longestCommonSubsequence(self, text1: str, text2: str) -> int:
        self.arr3 = [[-1 for x in range(1000)] for y in range(1000)]
        return self.lcs(0,0,self.text1,self.text2,self.arr3)
    def lcs(self,i,j,text1,text2,arr3):
        if (i>=len(text1) or j>=len(text2)):
            return 0
        elif (text1[i]==text2[j]):
            return (1+ self.lcs(i+1,j+1,text1,text2,arr3))
        elif arr3[i][j] != -1:
            return arr3[i][j]
        else:
            self.left = self.lcs(i+1,j,text1,text2,arr3)
            self.right = self.lcs(i,j+1,text1,text2,arr3)   
            arr3[i][j] = max(self.left,self.right)
            return arr3[i][j]
    def __init__(self):
        self.text1 = input()
        self.text2 = input()
        print(self.longestCommonSubsequence(self.text1,self.text2))
Solution()      
...