二进制n×m矩阵的模数c,每列中最多k个连续数为1

时间:2014-03-19 20:47:16

标签: algorithm matrix dynamic-programming binary-matrix

我正在尝试计算每列中最多k个连续值为1的nxm二元矩阵的数量。经过一些研究,我发现找到1列和n行的向量就足够了。例如,如果我们有p个向量,则所需的矩阵数将是m ^ p。 因为n和m非常大(<2.000.000),所以我找不到合适的解决方案。我试图找到一个递推公式,以建立一个矩阵,以帮助我计算答案。你能告诉我任何解决方案吗?

1 个答案:

答案 0 :(得分:1)

有一个(k + 1)状态动态程序(状态=先前1的数字,从0到k)。总而言之,你可以通过将k + 1的n次幂乘以k + 1整数矩阵来快速计算它的大项(例如k = 4)

1 1 0 0 0
1 0 1 0 0
1 0 0 1 0
1 0 0 0 1
1 0 0 0 0

模数c并对第一行求和。