相当简单,没什么好说的
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int getArea_max(vector<int> height);
int main()
{
vector<int> height;
int num;
int temp;
cin >> num;
height.reserve(num);
while (num--)
{
cin >> temp;
height.push_back(temp);
}
cout << getArea_max(height);
getchar();
getchar();
return 0;
}
int getArea_max(vector<int> height)
{
int height_max = 0;
int area_max = 0;
for (int i = 0; i < height.size(); i++) //get max height
{
if (height[i]>height_max)
{
height_max = height[i];
}
}
//from smallest height to biggest height
for (int i = 1; i <= height_max; i++)
{
int count = 0;
int count_max = 0;
for (int j = 0; j < height.size(); j++) //get max num of sequential rect
{
if (height[j] >= i)
{
count++;
}
else
{
count = 0;
}
if (count > count_max)
{
count_max = count;
}
}
int area_temp = count_max*i;
if (area_temp > area_max)
{
area_max = area_temp;
}
}
return area_max;
}