CSP考试2013.12第三题
最大的矩形
解答代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;//矩形的数量
int tmp;//存储当前矩形高度
cin >> n;
int ans = 0;//存储直方图最大矩形面积
int arrays[n];//存储直方图
for(int i = 0;i < n;i++)
{
cin >> tmp;//读取当前矩形高度
arrays[i] = tmp;
if(tmp > ans) ans = tmp;//若当前矩形高度大于最大矩形面积则更新
int hight_min = tmp; //更新连续最大高度
for(int j = i - 1; j >=0; j--)
{
hight_min = min(hight_min, arrays[j]);//更新最大连续高度
tmp = hight_min * (i - j + 1);//更新最大连续高度对应矩形面积
if(tmp > ans) ans = tmp;//若最大高度对应矩形面积大于最大矩形面积则更新最大矩形面积
}
}
cout << ans << endl;//输出最大矩形面积
return 0;
}