Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Выводит только размер подпоследовательности
- a = input().split()
- b = input().split()
- n = len(a)
- m = len(b)
- F = [[0] * (m + 1) for i in range(n + 1)]
- if a or b == 0:
- print(F[n][m])
- else:
- for i in range(1,n+1):
- for j in range(1,m+1):
- if a[i-1] == b[j-1]:
- F[i][j] = F[i-1][j-1] + 1
- elif a[i-1] != b[j-1]:
- F[i][j] = max(F[i-1][j], F[i][j-1])
- print(F[n][m])
- #Вывод самой подпоследовательности
- answer = []
- i = n
- j = m
- while i > 0 and j > 0:
- if a[i-1] == b[j-1]:
- answer.append(a[i-1])
- i-=1
- j-=1
- elif F[i-1][j] == F[i][j]:
- i-=1
- else:
- j-=1
- answer = answer[ : :-1]
- print(' '.join(map(str,answer)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement