题目链接 1158 全是1的最大子矩阵
大神链接 51nod 1158 全是1的最大子矩阵 (单调栈) 详细图解
题意
给出1个M*N的矩阵M1,里面的元素只有0或1,找出M1的一个子矩阵M2,M2中的元素只有1,并且M2的面积是最大的。输出M2的面积。
思路
使用单调栈,来储存最大的连续的1,求出每行每个位置的能连续1的最大值。例子中的矩阵变为:
1 2 0
1 2 3
0 1 2
然后发现对于每一列来说,要求的是一个区间内的最小值乘以区间长度,所有这些值的最大值。这就是对一个元素的两边进行扩展,发现这就是单调栈的应用了。
代码
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<s