计算直方图中最大矩形面积

题目是计算直方图中的最大矩形面积,下面是我的做法,我在网上也看到有人说可以通过栈的方式来解决,因为时间问题,并没有马上尝试,下回有时间在尝试下吧!!

还有这题有变式:计算矩阵中最大的矩形面积,其中矩阵中元素只能为1和0,代码下次补发吧!!

 

代码如下:

#include<iostream>
using namespace std;

int maxSquare(const int pos,const int n,const int height[])
{

if(n==1)
return height[0];

int square=0;
for(int i=pos;i<n;i++)
{
int count=1,temp_square=0;
int j=i-1;
while(j>=0)
{
if(height[j--]>=height[i])
count++;
else
break;
}
j=i+1;
while(j<n)
{
if(height[j++]>=height[i])
count++;
else
break;
}
temp_square=count*height[i];

if(temp_square>square)
square=temp_square;
}
return square;
}

int main()
{

int square,n,temp;
int height[100000];
cin>>n;
for(int i=0;i<n;i++)
{
cin>>temp;
height[i]=temp;
}
square=maxSquare(0,n,height);
cout<<square<<endl;
return 0;
}

posted @ 2015-10-12 22:48  罗曼蒂克_Night  阅读(296)  评论(0编辑  收藏  举报