Is it possible to do Longest Common Subsequence of Three Sequences using the same algorithm used for solving Longest Common Subsequence of Two Sequences,我的想法是,我找到以下公共子序列。假设这三个序列是'a','b‘和'c’。因此,我将把用于求解两个序列的最长公共子序列的函数传递为1)(a,b) 2)(b,c)和3)(c,a),并将这三种情况的长度存储在一个数组中,最后输出这三种情况中的最小值。
我能坚持到最后的测试用例,如果有人能建议一下上面提到的想法是否正确,我将不胜感激
我已经使用表格方法来求解两个序列的最长公共子序列,它适用于所有测试用例。(此视频https://www.youtube.com/watch?v=NnD96abizww中的表格方法灵感)
发布于 2020-05-16 03:11:38
s1 = [0] + set1
s2 = [0] + set2
s3 = [0] + set3
T = [] #OUTPUT ARRAY
D2 = [] #2D ARRAY
for k in range(o + 1):
D2 = []
for j in range(m+1):
x = [0]*(n+1) #THIS IS IMPORTANT ; IF PLACED OUT THEN IT WILL CREATE A REFERENCE
D2.append(x)
T.append(D2)
#INITIALLY T IS AN ARRAY OF ZEROS WITH THE RIGHT DIMENSION
for k in range(1,o+1):
for j in range(1 ,m+1):
for i in range(1,n+1):
if(s1[i] == s2[j] == s3[k]):
T[k][j][i] = T[k-1][j-1][i-1] + 1
else:
x = []
x.append(T[k][j][i-1])
x.append(T[k][j-1][i])
x.append(T[k-1][j][i])
T[k][j][i] = max(x)
print(T[k][m][n])https://stackoverflow.com/questions/61825366
复制相似问题