最大的矩形
来源:互联网 发布:苹果短信备份软件 编辑:程序博客网 时间:2024/05/11 15:13
http://blog.csdn.net/pipisorry/article/details/39434499
时间限制: 1.0s
内存限制: 256.0MB
问题描述
在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。
请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是10。
输入格式
第一行包含一个整数n,即矩形的数量(1 ≤ n ≤ 1000)。
第二行包含n 个整数h1, h2, … , hn,相邻的数之间由空格分隔。(1 ≤ hi ≤ 10000)。hi是第i个矩形的高度。
输出格式
输出一行,包含一个整数,即给定直方图内的最大矩形的面积。
样例输入
6
3 1 6 5 2 3
样例输出
10
code:
//****************************************************************************************************///*CCF软件能力认证考试模拟题 —— 最大矩形Largest Rectangle in a Histogram poj2559<span style="white-space:pre"></span>皮皮 2014-9-3*///****************************************************************************************************/#include <iostream>#include <assert.h>using namespace std;/*ccf标准算法TLE!!!*///????????????????static void largestRectangle(){int n;//直方图柱形数目cin>>n;int *height = new int[n];for(int i = 0; i < n; i++)cin>>height[i];long long sum, max = 0;for(int i = 0; i < n; i++){int h = height[i];for(int j = i; j < n; j++){//向右扫描if( height[j] < h )//高度小时改为小的高度h = height[j];sum = (j - i +1) * h;//计算高度h的矩形面积if(sum > max)//比原来大则替换max = sum;}while( i < n - 1 && height[i+1] < height[i] )//改进:比当前height[i]小的不用再计算(i后面高度比i小的不可能有更大面积的矩形)i++;}cout<<max<<endl;}static void largestRectangle1(){int n;cin>>n;//while(n){int *height = (int *)malloc(sizeof(int) * n);for(int i = 0; i < n; i++)cin>>height[i];int j, k, sum, max = 0;for(int i = 0; i < n; i++){sum = 1;//初始只有一个这样高度的j = i - 1;k = i + 1;while(j >= 0 && height[j] >= height[i]){//向左扫描同样高度的有多少个sum++;j--;}while(k <= n - 1 && height[k] >= height[i]){//向右扫描同样高度的有多少个sum++;k++;}sum *= height[i];<span style="white-space:pre"></span>//计算高度为当前大小的直方柱有多少个(即矩形面积大小)if(sum > max)max = sum;}cout<<max<<endl;cin>>n;/* }*/}int main(){//assert( freopen("CCF\\largestRectangle1.in", "r", stdin) );largestRectangle();//fclose(stdin);return 0;}
from:http://blog.csdn.net/pipisorry/article/details/39434499
1 0
- 最大的矩形
- 讨厌的最大矩形
- 最大的矩形
- 【ACM】最大的矩形
- CCF 最大的矩形
- CCF 最大的矩形
- 最大的矩形
- CSP最大的矩形
- 最大的矩形
- 最大的矩形
- CCF-最大的矩形
- 最大的矩形
- 最大的矩形
- 面积最大的矩形
- ccf最大的矩形
- 面积最大的矩形
- 最大的矩形
- 面积最大的矩形
- 自我分析-Spring IOC在Web应用的启动和销毁
- STL源码剖析——最大堆heap
- Dom4j解析【开发中常用】
- Android 开发笔记——通过 Intent 传递类对象
- nginx File not found 错误
- 最大的矩形
- cocos2dx3.X项目重写(四)添加地板,障碍物和碰撞检测
- iOS索引列开发详解
- Linux一级分页和多级分页优缺点
- 在QT中使用Irrlicht引擎的方法与步骤
- pull解析
- iOS开发动态计算cell的高度
- 求数组的子数组之和的最大值(动态规划)
- 我的第一篇博客