最大的矩形
2015-03-27 10:06
316 查看
输入格式
第一行包含一个整数n,即矩形的数量(1 ≤ n ≤ 1000)。
第二行包含n 个整数h1, h2, … , hn,相邻的数之间由空格分隔。(1 ≤ hi ≤ 10000)。hi是第i个矩形的高度。
输出格式
输出一行,包含一个整数,即给定直方图内的最大矩形的面积。
样例输入
6
3 1 6 5 2 3
样例输出
10
code:
[cpp] view
plaincopy
//****************************************************************************************************/
//*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
;
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;
}
相关文章推荐
- Poj 2559 最大矩形面积
- 最大的矩形
- poj 2559求柱形图中最大矩形
- POJ 2082 Terrible Sets 51nod 1102 面积最大的矩形 《题意好难懂---<贪心+单调栈>》
- POJ.2559[leetcode.84]直方图最大矩形及二维情况
- lintcode 直方图最大矩形覆盖与最大子矩阵
- 【51Nod】1102 - 面积最大的矩形面积(单调栈)
- 51nod-1102 面积最大的矩形
- Poj 2559 Largest Rectangle in a Histogram(柱形统计图中的最大矩形面积)
- CCF 201312-3最大的矩形
- 最大矩形
- leetcode之Largest Rectangle in Histogram、Maximal Rectanglex;待字闺中之最大矩形分析
- ccf 最大矩形
- 柱状图最大矩形问题
- 条形图中的最大矩形面积
- maximal-rectangle——找出最大矩形的面积
- [算法]CSDN编程挑战赛之寻找直方图中面积最大的矩形
- hdu1506 1505 2870最大子矩形 DP
- 面积最大的矩形
- Largest Rectangle in Histogram 直方图中最大的矩形面积