原题
题目大意
给一个矩阵,这个矩阵中的每个元素不是1就是0,问在这个矩阵中元素全是1的子矩阵的最大面积。
分析
首先,预处理每个元素向左有多少个1,这样的话,就得到了一个新的数组,不妨记为a[i][j],通过这个数组可以快速查找以该列为右边界的最大矩形面积了。
对于每个元素(可以成为基准元素),我们以它所在列为右边界,通过a数组,知道它左边有多少个1,就以这个作为矩形的宽,那么就只要寻找上下边界就可以了,因为要构成矩形,所以,沿着右边界上下寻找,要求找到元素的a值要大于基准元素,因为只有这样才能保证矩形的完整。
通过上面的方法,只要枚举每个元素,这个问题就解决了。(在寻找上下边界时,要充分利用已经计算过的值,加快寻找,具体看代码)
参考代码
|
|