CCF真题之最大矩形

201312-3

问题描述

  在横轴上放了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

源代码:

#include <iostream>
using namespace std;
int main()
{
 int n,i,j,h,s,max,a[1001];
 cin>>n;
 for(i=0;i<n;i++)
 cin>>a[i];
 max=0;
 //从第一个矩形开始,往右扫描,若后面的矩形高度比第一个低,则h为较低的那个值,不断发生改变
 for(i=0;i<n;i++)
 {
  h=a[i];
  for(j=i;j<n;j++)
  {
     if(a[j]<h)
      h=a[j];
      s=h*(j-i+1);   //矩形面积=长X宽
      if(s>max)
      max=s;
  } 
 }
 cout<<max<<endl; 
 return 0;
}

时间: 2024-09-27 00:05:23

CCF真题之最大矩形的相关文章

给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1(ccf真题)

ccf认证考试2014年9月第一题 问题描述 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1. 输入格式 输入的第一行包含一个整数n,表示给定整数的个数. 第二行包含所给定的n个整数. 输出格式 输出一个整数,表示值正好相差1的数对的个数. 样例输入 6 10 2 6 3 7 8 样例输出 3 样例说明 值正好相差1的数对包括(2, 3), (6, 7), (7, 8). 评测用例规模与约定 1<=n<=1000,给定的整数为不超过10000的非负整数. #include<

图像旋转(ccf真题)

ccf认证2015年3月第一题 问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度. 计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可. 输入格式 输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数. 接下来n行每行包含m个整数,表示输入的图像. 输出格式 输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵. 样例输入 2 3 1 5 3 3 2 4 样例输出 3 4 5 2 1 3 评测用例规模与约定

CCF真题之最优灌溉

201412-4 问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很深的水井,所有的麦田都从这口井来引水灌溉. 为了灌溉,雷雷需要建立一些水渠,以连接水井和麦田,雷雷也可以利用部分麦田作为“中转站”,利用水渠连接不同的麦田,这样只要一片麦田能被灌溉,则与其连接的麦田也能被灌溉. 现在雷雷知道哪些麦田之间可以建设水渠和建设每个水渠所需要的费用(注意不是所有麦田之间都可以建立水渠).请问灌溉所有麦田最少需要多少费用来修建水渠. 输入格式 输入的第一行包含两个正整数n, m,

CCF真题之画图

201409-2 问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色. 下图给出了一个画了两个矩形的例子.第一个矩形是(1,1) 到(4, 4),用绿色和紫色表示.第二个矩形是(2, 3)到(6, 5),用蓝色和紫色表示.图中,一共有15个单位的面积被涂上颜色,其中紫色部分被涂了两次,但在计算面积时只计算一次.在实际的涂色过程中,所有的矩形都涂成统一的颜色,图中显示不同颜色仅为说明方便. 给出所有

首届CCF真题2-窗口

问题描述 在某图形操作系统中,有 N 个窗口,每个窗口都是一个两边与坐标轴 分别平行的矩形区域.窗口的边界上的点也属于该窗口.窗口之间有层次 的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的内 容. 当你点击屏幕上一个点的时候,你就选择了处于被点击位置的最顶层 窗口,并且这个窗口就会被移到所有窗口的最顶层,而剩余的窗口的层次 顺序不变.如果你点击的位置不属于任何窗口,则系统会忽略你这次点击. 现在我们希望你写一个程序模拟点击窗口的过程. 输入格式 输入的第一行有两个正整数,即 N

CCF模拟题 最大的矩形

最大的矩形 时间限制: 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

14年12月CCF真题5-货物调度

问题描述 某公司要处理一个周期性的物流问题. 有n个城市,第i个城市在每周的第j(1≤j≤7) 天会生产aij吨某种货物,同时 需要消耗bij吨该种货物.已知每周的产量等于消耗量(即aij之和等于bij之和). 城市之间有m条道路,第k条道路连接了城市sk和tk.一条道路上运输1吨 货物有一个固定的成本ck.道路都可以双向使用.每天运输的货物量没有限制.城市之间的距离并不远,货物可以从任意一个城市运输到任意另一个城市并且在当天到达. 货物如果在当天没有被消耗掉,就需要存放在仓库里过夜.第i个城市

CCF真题之字符串匹配

201409-3 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符:当选项关闭时,表示同一个字母的大写和小写看作相同的字符. 输入格式 输入的第一行包含一个字符串S,由大小写英文字母组成. 第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感. 第三行包含一个整数n,表示给出的文字的行数. 接下来n行,每行包含一个字符串,字符串由大小写英文字

CCF真题之相邻数对

201409-1 问题描述 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1. 输入格式 输入的第一行包含一个整数n,表示给定整数的个数. 第二行包含所给定的n个整数. 输出格式 输出一个整数,表示值正好相差1的数对的个数. 样例输入 6 10 2 6 3 7 8 样例输出 3 样例说明 值正好相差1的数对包括(2, 3), (6, 7), (7, 8). 评测用例规模与约定 1<=n<=1000,给定的整数为不超过10000的非负整数. 源代码: #include <io