柱状图中的最大矩形面积

问题描述

将一组非负整数组成的数组h作为柱状图中每个柱子的高度值,且每个柱子宽度为1。找出这个柱状图中所包含矩形的最大面积。

解题思路

使用分治法,最大矩形面积只可能有三种情况:

  1. 取决于高度最小的柱子,此时要求的面积=最小高度*总长度;
  2. 出现在高度最小的柱子的左边;
  3. 出现在高度最小的柱子的右边。

程序实现

n=int(raw_input()) # 柱子数
h=[int(x) for x in raw_input().strip().split()] # 柱子高度数组
def largestArea(a):
    w=len(a)
    h_id=a.index(min(a))
    value1=w*a[h_id]
    if(h_id>0)
        value2=largestArea(a[:h_id])
    else
        value2=0
    if(h_id<len(a)-1)
        value3=largestArea(a[h_id+1:])
    else
        value3=0
    return max(value1,value2,value3)
print(largestArea(h))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容