最长公共子序列C(Python脚本说明)

时间:2018-11-13 08:02:05

标签: python c dynamic-programming lcs

在过去的几天中,我一直在使用动态编程开发C语言中的最长公共子序列程序。但是,我遇到内存问题,因为我正在尝试处理大量数据(这是很多),这会导致内存溢出。

幸运的是,我发现了一种线性空间复杂度算法,该算法对于避免内存溢出很有用,但是它是用Python编写的。有人可以帮我了解下图的情况吗?

Python Script for LCS Distance

更具体地说,我不明白“ curr = list(itertools.repeat(0,1 + ny))”行中发生了什么

其余的我都可以猜到。

谢谢!

1 个答案:

答案 0 :(得分:1)

它是这样工作的:

  1. 通过代码my=len(ys)读取ys的长度,在“黑猩猩”示例中该长度将为10

  2. 您的itertools.repeat将是list(itertools.repeat(1,11)),将给您列出11次的列表

    [1,1,1,1,1,1,1,1,1,1,1]

正如您所说的休息,您已经弄清楚了。

有关重复的更多信息,请查看以下内容:

https://docs.python.org/2/library/itertools.html