我得到一个0和1的N*M网格。我需要找到那些a*B大小的子矩阵的数量,这些子矩阵中有所有的1。
假设我有一个2*6的网格
网格是:
0 1 1 1 1 0
0 1 1 1 1 1 1
如果说我想找到2*3的子矩阵
那么这里的答案是2。

最佳答案

编辑:下面的提示假设“submatrix”是指“行的连续子集和列的连续子集的交集”(通常允许子矩阵跳过行和列。)
我相信这是一个家庭作业问题,所以我只提供一个提示而不是一个完整的答案。
假设有一种方法可以有效地计算每一个单元格(i,j)是否是连续运行至少m 1s的最右边的单元格。那会有什么帮助?
另一个提示:任何给定的单元格(i,j)要么是1s的n*m网格的右下角,要么不是。

07-28 01:04