首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python递归调用未执行代码-3个序列的子序列的最长公共

Python递归调用未执行代码-3个序列的子序列的最长公共
EN

Stack Overflow用户
提问于 2018-07-31 20:10:31
回答 1查看 56关注 0票数 0
代码语言:javascript
复制
def lcs3(a, b, c, an, bn, cn):
global arr
print(an,bn,cn,end=" ")
print(arr[an][bn][cn],end="/ ")
if arr[an][bn][cn] != None:
    print ("Already here")
    return arr[an][bn][cn]
if an == 0 or bn == 0 or cn == 0:
    arr[an][bn][cn] = 0
    print("One of 3 inputs is 0")
elif a[an-1] == b[bn-1] and b[bn-1] == c[cn-1]:
    print("match!", an, bn, cn)
    arr[an][bn][cn] = lcs3(a,b,c,an-1,bn-1,cn-1)+1
else:
    print("Calculating")
    arr[an][bn][cn] = max(lcs3(a,b,c,an-1,bn,cn),
                          lcs3(a,b,c,an,bn-1,cn),
                          lcs3(a,b,c,an,bn,cn-1))
return arr[an][bn][cn]

这是我的一个函数,通过将3个序列和序列的长度作为输入来计算最长的公共子序列。该算法是一种自顶向下的动态规划方法,arr定义在函数外部(三维列表,大小为an+1,bn+1,cn+1 )

编辑:打印问题已经解决,但我仍然得到一个错误的答案。对于输入

5

8 3 2 1 7

7

8 2 1 3 8 10 7

6

6 8 3 1 4 7

我得到2个返回值。

EN

回答 1

Stack Overflow用户

发布于 2018-08-07 07:13:45

答案很简单:

if arr[an][bn][cn] != None: return arr[an][bn][cn] print("Already in arr")

在打印第一个if语句之前返回。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51613093

复制
相关文章

相似问题

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