编程思想:
本质为计算直方图中最小长方形面积
设立三个数组,h,l,r
数组h[i]代表从当前行向上的直方图的第i列有多少个1,有0间隔即不算
数组l[i]代表大于等于h[i]个1的列最小标号为多少
数组r[i]代表大于等于h[i]个1的列最大标号为多少
算完这三个数组之后,循环j次~用公式h[i]*(r[i]-l[i]+1)计算以该行为底的最大矩形
上边的步骤循环i次,即将i行为底都统计一遍,找到最大矩形即可
存疑:
为什么有了下边这句话就对了,没有就不对呢?
memset(h,0,sizeof(h));