思路如下:
利用i, j 将二维数组的所有节点遍历一遍
利用m, n将以[i][j]为左上顶点的子矩阵遍历一遍
判断i, j, m, n四个变量确定的矩阵是否为全1矩阵
代码实现:
int numSubmat...在最后判断是否全1的循环中, 如果左上的数字是0, 那必然没有全1子矩阵了
再如果向下找的时候, 碰到0, 那下一列的时候也没必要超过这里了, 因为子矩阵至少有一个0了, 如下图:
?...image-20200710234204779
在向右遍历的时候同理, 这样, 我们就可以确定, 所有遍历到的值都是1, 可以将判断全1的两层循环去掉. nice....在所有的遍历之前, 先进行一次遍历, 把每个节点向右的连续1个数计算好. 这个思路有点妙啊....// 遍历当前节点为左上顶点的所有子矩阵
for (int m = i; m < matSize; m++) {
// 记录向右的最大值