zoukankan      html  css  js  c++  java
  • 最大的矩形--CCF模拟

    问题描述

    在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。

    请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是10。

    输入格式

    第一行包含一个整数n,即矩形的数量(1 ≤ n ≤ 1000)。

    第二行包含n 个整数h1, h2, … , hn,相邻的数之间由空格分隔。(1 ≤ hi ≤ 10000)。hi是第i个矩形的高度。

    输出格式
    输出一行,包含一个整数,即给定直方图内的最大矩形的面积。
    样例输入

    6

    3 1 6 5 2 3

    样例输出
    10
     
    #include <iostream>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <deque>
    #include <list>
    using namespace std;
    int main()
    {
        int n;
        vector<int> a;
        cin >> n;
        for (int i = 0; i < n; i++)
        {
            int x;
            cin >> x;
            a.push_back(x);
        }
        int ans = 0;
        for (int i = 0; i < n; i++)
        {
            int h = a[i];
            for (int j = i; j < n; j++)
            {
                if (a[j] < h)     h = a[j];
                int s = (j - i + 1) * h;
                if (ans < s)     ans = s;
            }
        }
        cout << ans << endl;
        return 0;
    }
  • 相关阅读:
    Linux中的阻塞机制
    Shellz中awk的简单用法
    实际项目开发过程中常用C语言函数的9大用法
    堆栈溢出一般是什么原因?
    哈夫曼算法原理
    7款易上手C语言编程软件推荐
    嵌入式系统分类介绍
    什么是字符串数组
    C语言中数组定义方式
    第三章课后习题P56解析
  • 原文地址:https://www.cnblogs.com/wejex/p/4161976.html
Copyright © 2011-2022 走看看