gpt4 book ai didi

algorithm - 最长公共(public)子串错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:14:27 26 4
gpt4 key购买 nike

到目前为止我已经做到了

function lcs(xstr, ystr)
if xstr:len() == 0 or ystr:len() == 0 then
return ""
end
x = xstr:sub(1,1)
y = ystr:sub(1,1)
xs = xstr:sub(2)
ys = ystr:sub(2)
if x == y then
return x .. lcs(xs, ys)
else
l1 = lcs(xstr, ys)
l2 = lcs(xs, ystr)
if l1:len() > l2:len() then
return l1
else
return l2
end
end
end

print(lcs("abcd", "bcd"))

不幸的是,它只打印“d”而不是预期的“bcd”。对我来说,它看起来像“l2 = lcs(xs, ystr)”这一行还没有被执行,因为如果我在开头添加调试打印,它会打印出那个函数没有被调用机智参数“bcd”和“bcd”,但我确信在 else 语句开始之后值是正确的。如果有任何帮助,我将不胜感激。

最佳答案

你的xs变量是全局的

l1 = lcs(xstr, ys)
l2 = lcs(xs, ystr)

第一行破坏了第二行使用的 xs 值。
将所有临时变量(x、y、xs、ys、l1、l2)设为本地。

关于algorithm - 最长公共(public)子串错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22072939/

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