qduoj LC的课后辅导

描述

有一天,LC给我们出了一道题,如图:

qduoj  LC的课后辅导

这个图形从左到右由若干个 宽为1 高不确定 的小矩形构成,求出这个图形所包含的最大矩形面积。

输入

多组测试数据
每组测试数据的第一行为n(0 <= n <= 100), 表示图形有n个小矩形构成
接下来一行输入n个整数h1, h2...hn(0 <= hi <= 1000), 表示每个小矩形的高度
n为0时程序结束

输出

仅输出一行表示面积的最大值

样例输入1
复制
7
2 1 4 5 1 3 3
4
1000 1000 1000 1000
0
样例输出1
8
4000 单调栈
代码:
#include <iostream>
using namespace std;
int n,a[],stack[],top,l[],r[];
int main()
{
while(cin>>n&&n){
top=;
a[]=a[n+]=-;
for(int i=;i<=n;i++)
{
cin>>a[i];
l[i]=r[i]=i;
}
for(int i=;i<=n+;i++)
{
while(top&&a[i]<=a[stack[top-]])
{
r[stack[top-]]=i-;
top--;
}
l[i]=stack[top-]+;
stack[top++]=i;
}
int temp=-;
for(int i=;i<=n;i++)
if((r[i]-l[i]+)*a[i]>temp)temp=(r[i]-l[i]+)*a[i];
cout<<temp<<endl;
}
}
上一篇:jmeter笔记(5)--参数化--CSV Data Set Config


下一篇:Java爬取网络博客文章