最长公共子序列C(Python脚本解释)

Longest Common Subsequence C (Python Script explanation)

最近几天,我一直在使用动态规划在 C 中编写最长公共子序列程序。不过,我遇到了内存问题,因为我正在尝试处理大量数据(我的意思是很多),这会导致内存溢出。

幸运的是,我找到了一个线性 space 复杂度算法,它在避免内存溢出方面很有用,但它是用 Python 编写的。有人可以帮助我理解下图中发生的事情吗?

更具体我不明白"curr = list(itertools.repeat(0, 1 + ny))"

中发生了什么

剩下的我可以猜到。

提前致谢!

这是它的工作原理:

  1. 通过代码 my=len(ys) 读取 ys 的长度,在 "Chimpanzee" 示例中为 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