我是靠谱客的博主 矮小毛豆,最近开发中收集的这篇文章主要介绍CSP认证201312-3最大的矩形[C++题解]:枚举,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

      • 题目解答
      • 题目链接

题目解答

在这里插入图片描述
在这里插入图片描述
来源:acwing

分析:面积最大,下边界一定是直方图的最下边,上边界一定和某个长条高度重合。这样枚举所有的高度,同时看左右宽度能够到哪儿,这样就可以通过长*宽算出来面积,然后取一个最大的即可。

时间复杂度 O ( n 2 ) O(n^2) O(n2)

ac代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;

int n;
int h[N]; //高度

int main(){
    cin >> n;
    for(int i =1; i<= n; i++) cin >>h[i];
    int res = 0;
    for(int i =1; i<=n; i++){ //枚举每个高度
        int l = i, r = i;
        while(l >= 1 && h[l] >= h[i]) l--;
        while(r <= n && h[r] >= h[i]) r++;
        res = max(res, h[i] *(r- l -1)); //取最大的面积
    }
    cout << res << endl;
}

题目链接

https://www.acwing.com/problem/content/3197/

最后

以上就是矮小毛豆为你收集整理的CSP认证201312-3最大的矩形[C++题解]:枚举的全部内容,希望文章能够帮你解决CSP认证201312-3最大的矩形[C++题解]:枚举所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部