题解 | #最长公共子序列(一)#

最长公共子序列(一)

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)))


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务