首页 > 其他 > 详细

直方图最大矩阵面积

时间:2016-04-30 19:32:24      阅读:418      评论:0      收藏:0      [点我收藏+]

直方图最大矩阵面积法:

给定n个非负整数,表示直方图的方柱的高度,同时,每个方柱的宽度假定都为1,找出直方图中最大的矩形面积。

如:给定高度为:2,1,5,6,2,3,最大面积为10.

技术分享

程序实现:

 1 #include <iostream>
 2 #include <stack>
 3 #include <algorithm>
 4 #include <cstring>
 5 using namespace std;
 6 
 7 int LargestRectangleArea(vector<int>& height){
 8     height.push_back(0);//为了统计,数组最后添加0,确保原数组的最后一位得到计算
 9     stack<int> s;
10     int LargestArea = 0;
11     int temp,i=0;
12     while(i<(int)height.size()){
13         if(s.empty()||(height[i]>height[s.top()])){
14             s.push(i);
15             i++;
16         }
17         else{
18             temp = s.top();
19             s.pop();
20             LargestArea = max(LargestArea,height[temp]*(s.empty()?i:i-s.top()-1));
21         }
22     }
23     return LargestArea;
24 }
25 int main()
26 {
27     int a[] ={2,1,5,6,2,3};
28     vector<int> height(a,a+sizeof(a)/sizeof(int));
29     cout<<LargestRectangleArea(height)<<endl;
30     return 0;
31 }

运行结果:

技术分享

转载请注明出处:

C++博客园:godfrey_88

http://www.cnblogs.com/gaobaoru-articles/

直方图最大矩阵面积

原文:http://www.cnblogs.com/gaobaoru-articles/p/5449113.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!