2025年5月26日 星期一

lcs

a,b = input().strip().split()

n,m = len(a),len(b)


t = [ [0]*(m+1) for _ in range(n+1)]


for i in range(1,n+1):

  for j in range(1,m+1):

    if a[i-1]==b[j-1]:t[i][j]=t[i-1][j-1]+1

    else:t[i][j] = max(t[i-1][j],t[i][j-1])

print(t[n][m])


i,j = n,m

lcs = []

while i>0 and j>0:

  if a[i-1]==b[j-1]:

    lcs.append(a[i-1])

    i-=1

    j-=1

  elif t[i-1][j]>t[i][j-1]:  i-=1

  else:   j-=1

lcs.reverse()

print(''.join(lcs))

沒有留言:

張貼留言