如何解决无动态规划的最长公共子序列长度
我正在做一个没有动态规划的寻找最长公共子序列(LSC)的练习,到目前为止我有返回最长公共子序列的代码但我还需要返回序列的长度,我必须做什么做什么?
这是返回最长公共子序列的代码
def lcs(str1,str2):
if len(str1) == 0 or len(str2) == 0:
return ""
if str1[-1] == str2[-1]:
return lcs(str1[:-1],str2[:-1]) + str1[-1]
t1 = lcs(str1[:-1],str2)
t2 = lcs(str1,str2[:-1])
if len(t1) > len(t2):
return t1
else:
return t2
如何返回序列的长度?
解决方法
只需让您的 return
语句返回原始字符串的长度:
def lcs(str1,str2):
if len(str1) == 0 or len(str2) == 0:
return 0 #len("")
if str1[-1] == str2[-1]:
return lcs(str1[:-1],str2[:-1]) + 1
return max(lcs(str1[:-1],str2),lcs(str1,str2[:-1]))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。