Largest Rectangle in a Histogram
题目
如图所示,在一条水平线上有n个宽为1的矩形,求包含于这些矩形的最大子矩形面积(图中的阴影部分的面积即所求答案)。
输入
有多组测试数据,每组数据占一行。输入零时读入结束。
每行开头为一个数字n(1<=n<=100000),接下来在同一行给出n个数字h1h2…hn(0<=hi<=1000000000)表示每个矩形的高度。
输出
对于每组数据,输出最大子矩阵面积,一组数据输出一行。
输入样例
7 2 1 4 5 1 3 3
4 1000 1000 1000 1000
0
输出样例
8
4000
解题思路
其实这道题就是一道单调栈,来保存每一个矩形,这些矩形的面积必须是单调递增的,如果不是就弹出,把每个矩形给扫描一遍,然后弹出,然后不断的更新答案即可.
程序如下
#include<iostream>