Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用“全部1”计算子矩阵_C++_Algorithm - Fatal编程技术网

C++ 用“全部1”计算子矩阵

C++ 用“全部1”计算子矩阵,c++,algorithm,C++,Algorithm,给我一个N*M的0和1的网格,我需要找到大小为a*B的子矩阵的数量,这些子矩阵中都有1 假设我有一个2*6的网格 网格为: 0110 01 现在如果我想找到大小为2*3的子矩阵 然后这里的答案是2。编辑:以下提示假设“子矩阵”的意思是“行的连续子集和列的连续子集的交点”。(通常允许子矩阵跳过行和列。) 我相信这是一个家庭作业问题,所以我只提供一个提示,而不是完整的答案 假设有一种方法可以有效地计算每个单元格(i,j),它是否是一行中至少m1运行的最右边的单元格。那会有什么帮助 另一个提示:任何给

给我一个N*M的0和1的网格,我需要找到大小为a*B的子矩阵的数量,这些子矩阵中都有1

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

网格为:

0110

01

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


然后这里的答案是2。

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

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

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


另一个提示:任何给定的单元格(i,j)要么是1的N*M网格的最右下角,要么不是。我不明白为什么是2(我找到3)。你能解释一下吗?@hivert从(0,1)开始的那个和从(0,2)开始的那个。哪一个是第三个?和OP,请告诉我们您到目前为止尝试了什么。@hivert怎么做三个?它们只有两个。一个在开始索引(1,2)处,另一个在开始索引(1,3)@Carsten我知道使用直方图下的最大面积来查找所有1的最大子矩阵。对于这个问题可以修改吗?是否有任何特殊要求,例如关于运行时间?到目前为止,这个问题听起来很简单:
对于每个单元格(x,y){if(thereisasubmatrix(x,y))count++;}
。顺便说一句:一些编程语言标签可能也很有趣。