首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有人能告诉我这个解决三序列最长公共子序列问题的方法是不是正确的

问有没有人能告诉我这个解决三序列最长公共子序列问题的方法是不是正确的
EN

Stack Overflow用户
提问于 2020-05-16 01:46:27
回答 1查看 26关注 0票数 0
代码语言:javascript
复制
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中的表格方法灵感)

EN

回答 1

Stack Overflow用户

发布于 2020-05-16 03:11:38

代码语言:javascript
复制
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])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61825366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档