gpt4 book ai didi

python - 使用字典内存

转载 作者:太空狗 更新时间:2023-10-30 00:13:51 28 4
gpt4 key购买 nike

因此,我尝试在 Python 中实现最低公共(public)子序列,并尝试使用此替代方案来替代我之前的解决方案。我尝试使用字典而不是二维矩阵来内存结果。

def lcs(s1, s2):

cache = {}
if len(s1) == 0 or len(s2) == 0:
return 0
if (s1, s2) in cache:
return cache[s1, s2]
else:
if s1[-1] == s2[-1]:
cache[s1, s2] = 1 + lcs(s1[:-1], s2[:-1])
else:
cache[s1, s2] = max(lcs(s1[:-1], s2), lcs(s1, s2[:-1]))
print cache

它回来了

TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'

我的理解是因为我没有返回任何东西所以我怎么能做这样的事情。

return cache[s1, s2] = 1 + lcs(s1[:-1], s2[:-1])

我正在尝试在不使用任何装饰器的情况下实现它。

最佳答案

试试这个

cache = {}
def lcs(s1, s2):
global cache
if len(s1) == 0 or len(s2) == 0:
return 0
if (s1, s2) in cache:
return cache[(s1, s2)]
else:
if s1[-1] == s2[-1]:
cache[(s1, s2)] = 1 + lcs(s1[:-1], s2[:-1])
else:
cache[(s1, s2)] = max(lcs(s1[:-1], s2), lcs(s1, s2[:-1]))
return cache[(s1, s2)]

关于python - 使用字典内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33628707/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com