CSP

2013_12_CSP_3

最大的矩形

Posted by clever on December 19, 2020

CSP考试2013.12第三题

最大的矩形

2013_12_3_1.PNG

2013_12_3_1.PNG

解答代码如下:

#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;
}