在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。 请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是...
从当前高度开始往后遍历它后面的高度h[j],如果小于maxh,令maxh=h[j],表示矩形最大高度变小了。 宽度为i-j+1, 计算当前矩形的面积s。 如果s大于ans,记录下最大的面积。 int boli(){ int ans = 0; int n; int h[N]; int maxh, s; cin>>n; for(int i=0;i<n;i++){ cin>>h[i]; }...
【CCF-CSP】201312-3 最大的矩形 题目 给n 个数,代表 n 个矩形的高度,将 n 个矩形平放,求能剪出的最大矩形的面积。 n < 1e3。 分析 这题跟 POJ-2559 一样,不过数据很水,暴力也行。 用单调栈可以达到 O(n) 的做法。对于每个数,找到向左向右第一个比当前数小的数的位置,就可以确定包...
/* CCF201312-3 最大的矩形 */#include<iostream>usingnamespacestd;constintN=1000;inth[N];intmain(){intn,ans,height,area;// 输入数据cin>>n;for(inti=0;i<n;i++)cin>>h[i];// 计算最大矩形面积:暴力法(枚举法)ans=0;for(inti=0;i<n;i++){height=h[i];for(intj=i;j<n;j++){...
最大的矩形(单调栈) & Sliding Window(单调队列) 今天刷CCF的时候碰到了最大的矩形这个题,顺便复习了一下单调栈和单调队列 Sliding Window POJ 2823题目链接<– 题意: 给一个1E6长的数列,求每个长度为K的区间的最大值和最小值 代码: /* POJ 2823 Sliding Window Run ID User Problem Result Memory Time ...
CCF CSP 201312-3 最大的矩形 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。 请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例...
CCF201312-3最大矩形(暴力) 1 #include<iostream> 2 using namespace std; 3 //暴力计算 4 int a[1001];//原数组 5 int main(){ 6 int i,j,k,n,max,len,temp; 7 cin>>n; 8 for(i=0;i<n;i++){ 9 cin>>a[i]; 10 } 11 max=a[0]; 12 for(i=0;i<n;i++){ 13 len=1; ...
201312-3 最大的矩形 暴力做法:\(O(n^2)\)。 const int N=1010; int a[N]; int l[N],r[N]; int n; int main() { cin>>n; for(int i=0;i<n;i++)cin>>a[i]; int res=0; for(int i=0;i<n;i++) { int l=i,r=i;...
参见:CCF201312-3 最大的矩形(100分)。 提交后得100分的C++语言程序如下: /* CCF201312-3 最大的矩形 */#include<iostream>#include<stack>usingnamespacestd;constintN=1000;inth[N+1];intmain(){intn,ans=0,area,temp;// 输入数据cin>>n;for(inti=0;i<n;i++)cin>>h[i];h[n]=0;// 计...
CCF_ 201312-3_最大的矩形 遍历数组中每一元素,左右延伸得出宽度。 #include<iostream>#include<cstdio>usingnamespacestd;intmain() {intn,a[1005],sum =0; cin>>n;for(inti =1;i <= n;i++) cin >>a[i];for(inti =1;i <= n;i++)...