有一个直方图,用一个整数数组表示,其中每列的宽度为1,求所给直方图包含的最大矩形面积。比如,对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。
给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。
测试样例:
[2,7,9,4,1],5
返回:14
class MaxInnerRec {
public:
int countArea(vector<int> A, int n)
{
int i,j,k1,k2;
int tri[500];
for(i=0;i<n;++i)
{
for(j=i;j<n;)
{
if(A.at(i)>A.at(j))
break;
++j;
}
k2=--j;
for(j=i;j>=0;)
{
if(A.at(i)>A.at(j))
break;
--j;
}
k1=++j;
tri[i]=A.at(i)*(k2-k1+1);
}
k1=tri[0];
for(i=1;i<n;++i)
{
if (tri[i]>k1)
k1=tri[i];
}
return k1;
}
};