bobo老师你好
我觉得LCS问题用记忆化搜索好像要比动态规划合理一些
1是动态规划可能会去求一些无用解,比如当2个字符串的最后一个字符相同时,记忆化搜索就直接跳到了2个字符串的倒数第二个字符上,而动态规划会把所有的与最后一个字符有关的解全部求出来,而且这个过程可能发生多次 如s1="CABCD" s2="DABCD",记忆化搜索就会极快的直接跳到4+s1[0],s2[0]上 而动态规划还是得求出所有可能,2重循环运行6^2次
2出了字符串尾部 记忆化搜索针对头部也可以很方便的完成剪枝 当lcs的返回值就等于当前考虑的这边的元素长度时,另一边就可以不用去考虑了,如s1="ABCFH" s2="AEBECEF"当递归到 s1,4 s2,6 ("ABCF","AEBECE")时这时lcs(3,6)的返回值就是3,代表s1被选完了,于是便可以不去考虑lcs(4,5)了