CCF认证模拟之最大的矩形
来源:互联网 发布:nike官网抢鞋软件 编辑:程序博客网 时间:2024/05/21 18:00
引言
Today is A good day!心情大好,所以连发博客,记录一下自己苦苦鏖战准备CCF的血泪史ᕙ[・・]ᕗ好,这篇是官网模拟题的第三题,最大的矩形
题目
问题描述 在横轴上放了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个矩形的高度。输出格式 输出一行,包含一个整数,即给定直方图内的最大矩形的面积。样例输入63 1 6 5 2 3样例输出10
解题思路
这个解决起来还是比较棘手的。关键在于怎么样才能获取到最大的那个矩形==。为了这个,我也是纠结了老半天,最后没办法只好看看网上大神怎么说。最后在结合了几篇博文的深入骨髓的洗礼之后,偶终于懂得了这道题的精华所在,特此记录下来。这个算法的思路是这样的,也算是一种穷举算法(但穷举之外还隐含着分治的思想)吧:以某个矩形为基础,分两个方向(分治)遍历,只要找到比它自己的面积大的矩形就继续遍历,因为这样才能最终得到最大的矩形。如果找到的矩形面积比它自己小,就break;如此以来最后最大的矩形面积就是这个矩形的高 * 遍历的宽度(这个宽度当然是前后两个方向遍历的总宽度width)。 当然对每个矩形都需要做相同的遍历,最后取最大的。
代码
- 截图:
OK
这样子就好啦,把类名改成Main,提交,第三个“100分”到手!!!
♪(´ε`)
0 0
- CCF认证模拟之最大的矩形
- CCF认证-最大的矩形
- ccf认证最大的矩形
- CCF模拟试题-最大的矩形
- CCF计算机软件能力认证模拟试题-最大的矩形(Java参考答案学习记录)
- CCF之最大矩形
- CCF 最大的矩形
- CCF 最大的矩形
- CCF-最大的矩形
- ccf最大的矩形
- CCF试题--最大的矩形
- ccf试题 最大的矩形
- CCF认证201312前三题:出现最多的数、ISBN编码、最大矩形
- CCF计算机软件能力认证试题练习201312-3-最大的矩形
- CCF认证模拟之出现次数最多的数
- CCF 201312-3最大的矩形
- CCF-最大的矩形-201312-3
- 最大的矩形-CCF测试往届题
- Service Plugin / Agent - 每天5分钟玩转 OpenStack(73)
- C++ STL算法系列2---find ,find_first_of , find_if , adjacent_find的使用
- 华为OJ——201301 JAVA题目0-1级
- LeetCode 118. Pascal's Triangle
- CSS控制文字只显示一行,超出部分显示省略号
- CCF认证模拟之最大的矩形
- 华为OJ——记票统计
- Java大牛 博客
- MySQL各种日志文件
- ZMQ Guide学习笔记(1)--模式简介
- Java 语法总结
- Inorder Successor in Binary Search Tree
- PhotoShop绘制原画讲解
- 代理模式