题目描述:https://www.nowcoder.com/questionTerminal/c996bbb77dd447d681ec6907ccfb488a
实现代码:
#最长公共子序列;
s1 = 'BDCABA'
s2 = 'ABCBDAB'
n1 = len(s1)
n2 = len(s2)
dp = [[0] * (n1 + 1)] * (n2 + 1)
for i in range(1, n1):
for j in range(1, n2):
if s1[i - 1] == s2[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
else:
dp[i][j] = max(dp[i][j - 1], dp[i - 1][j])
print(dp[-1][-1])