题解 | #最长公共子序列(一)#
最长公共子序列(一)
https://www.nowcoder.com/practice/672ab5e541c64e4b9d11f66011059498
n,m = map(int,input().split()) s1 = input() s2 = input() dp = [[0]*m for i in range(n)] for i in range(n): for j in range(m): if i == 0 and j != 0: if s1[i] == s2[j]: for jj in range(m-1,j-1,-1): dp[i][jj] = 1 elif i != 0 and j == 0: if s1[i] == s2[j]: for ii in range(n-1,i-1,-1): dp[ii][j] = 1 else: if s1[i] == s2[j]: dp[i][j] = dp[i-1][j-1] + 1 else: dp[i][j] = max(dp[i-1][j], dp[i][j-1]) print(max(max(dp)))