p = [10,20,30,80,90,40,50,60]
q = sorted(p)[:-3]
n = len(p)
m = len(q)
print(p)
print(q)
d = [[0]*(m+1) for _ in range(n+1)]
for i in range(1,n+1):
for j in range(1,m+1):
if p[i-1]==q[j-1]:
d[i][j]=d[i-1][j-1]+1
else: d[i][j]=max(d[i-1][j],d[i][j-1])
lcs = []
i,j = n,m
while i>0 and j >0:
if p[i-1]==q[j-1]:
lcs.append(str(p[i-1]))
i-=1
j-=1
elif d[i-1][j]>d[i][j-1]:
i-=1
else:
j-=1
lcs.reverse()
print(d[n][m])
print(' '.join(lcs))
Output:
[10, 20, 30, 80, 90, 40, 50, 60]
[10, 20, 30, 40, 50]
5
10 20 30 40 50
沒有留言:
張貼留言