• 最大矩形面积


    posted on 2019-08-26 14:44:50

    最大矩形面积

    题目描述
    给出一个柱形统计图,图中有n个项目,它的每个项目的宽度是1, 高度为(h_i)。 求这个柱形图中的最大面积的长方形。

    sample.png

    输入格式

    从标准输入读入数据。

    输入共两行。

    第一行一个正整数 n((leq 10^6))。

    第二行 n 个正整数,第 i 个数为 (h_i)(leq10^6)) ,两个数之间用空格隔开。

    输出格式

    输出到标准输出。

    输出一行,一个数,表示答案。

    样例 1 输入

    7

    2 1 4 5 1 3 3

    样例 1 输出

    8


    标程如下

    #include <iostream>
    #include <cmath>
    using namespace std;
    int n;
    struct node {//搞个结构体储存h高度l长度
        int h, l;
    } s[1000005];
    int h, ans, top, sum;
    //top栈顶元素,ans矩形面积,sum长度累加,h输入当前矩形高度
    int main() {
        cin >> n;
        for (int i = 1; i <= n; i++) {
            cin >> h;
            sum = 0;//更新当前长度为0
            while (top && s[top].h > h) {
                ans = max(s[top].h * (s[top].l + sum), ans);
                sum += s[top].l;
                top--;
            }
    /*如果加入的h不如栈顶h大的话,从栈顶开始往左算最大面积,
    
    */
            top++;
            s[top].h = h;
            s[top].l = sum + 1;
        }
        sum = 0;
        while (top) {
            ans = max(ans, s[top].h * (s[top].l + sum));
            top--;
        }
        cout << ans;
        return 0;
    }
    
  • 相关阅读:
    Python 十七天 成员
    python学习17——字典。
    python学习16——列表。
    python学习15——Random。
    python学习14——分支和函数。
    python学习13——while循环。
    python学习12——循环和列表
    python学习8——整理第一部分。
    Flask HTTP请求与响应
    Falsk 路由简析
  • 原文地址:https://www.cnblogs.com/xuanfly/p/11808522.html
Copyright © 2020-2023  润新知