题目介绍
给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。
输入描述:
输入包括两行,第一行包含一个整数n(1 ≤ n ≤ 10000)
第二行包括n个整数,表示h数组中的每个值,h_i(1 ≤ h_i ≤ 1,000,000)
输出描述:
输出一个整数,表示最大的矩阵面积。
输入例子1:
6
2 1 5 6 2 3
输出例子1:
10
题目分析
其实这个题目的思路就是保存当前最大的面积,然后依次遍历剩下的面积。请注意题目的边界条件,详细思路见源代码。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
int max_area=0;
cin>>n;
cin.ignore();
vector<int> vec(n);
for(int i=0;i<n;i++)
{
cin>>vec[i];
}
for(int i=0;i<n;i++)
{
int min_num= 1000000;
for(int j=i;j<n;j++)
{
int height=min(min_num,vec[j]);
int area=(j-i+1)*height;
min_num=height;
max_area=max(area,max_area);
}
}
cout<<max_area<<endl;
return 0;
}