用所有子计算子矩阵

时间:2014-02-22 16:06:58

标签: c++ algorithm

我得到一个N * M网格0s和1s.I我需要找到大小为A * B且其中包含全部1的子矩阵的数量。

就像假设我有一个2 * 6的网格

网格是:

0 1 1 1 1 0

0 1 1 1 1 1

现在,如果我想找到大小为2 * 3的子矩阵

然后这里的答案是2。

1 个答案:

答案 0 :(得分:0)

编辑:以下提示假设“子矩阵”表示“行的连续子集与连续子集的交集列“。 (通常允许子矩阵跳过行和列。)

我认为这是一个家庭作业问题,所以我只是提供一个提示而不是一个完整的答案。

假设有一种方法可以有效地计算每个单元格(i,j),它是否是连续运行至少m 1的最右边单元格。这会有什么帮助?

另一个暗示:任何给定的单元格(i,j)要么是某个N * M网格的最右下角1s,要么不是。