直方图最大矩形面积--c/c++

来源:互联网 发布:淘宝店更换类目影响 编辑:程序博客网 时间:2024/06/05 20:33

有一个直方图,用一个整数数组表示,其中每列的宽度为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;}};

原创粉丝点击