【美团】最大矩形面积(分治法)
来源:互联网 发布:上海大华电子秤软件 编辑:程序博客网 时间:2024/05/16 07:46
给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。
输入描述:
输入包括两行,第一行包含一个整数n(1 ≤ n ≤ 10000)第二行包括n个整数,表示h数组中的每个值,h_i(1 ≤ h_i ≤ 1,000,000)
输出描述:
输出一个整数,表示最大的矩阵面积。
示例1
输入
62 1 5 6 2 3
输出
10
分治法:最大矩形面积只可能有三种情况:
1. 取决于高度最小的柱子,此时面积等于高度乘总长度;
2. 最大面积出现在高度最小的柱子左边;
3. 最大面积出现在高度最小的柱子右边;
'''
#include<iostream>using namespace std;int sort(int *a,int low,int high){ int min=low; for(int i=low+1;i<=high;i++) { if(a[i]<a[min]) min=i; } return min; }int area(int *a,int low,int high){ int pivot; int area_max; if(low==high) return a[low]; else if(low<high) { int area_1,area_2,area_3; pivot=sort(a,low,high); area_2=(high-low+1)*a[pivot]; area_1=area(a,low,pivot-1); area_3=area(a,pivot+1,high); area_max=(area_1>area_2)?area_1:area_2; area_max=(area_3>area_max)?area_3:area_max; return area_max; } return 0; }int main(){ int N; while(cin>>N) { int * p=new int[N]; for(int i=0;i<N;i++) cin>>p[i]; int max=area(p,0,N-1); cout<<max; } }
阅读全文
0 0
- 【美团】最大矩形面积(分治法)
- 美团2017校招-最大矩形面积
- 最大连续矩形面积(栈实现)
- 找出最大矩形面积(枚举)
- poj2559(单调栈)最大矩形面积
- 最大矩形面积问题
- 【最大子矩形】面积
- 【最大子矩形】面积
- POJ2559 最大矩形面积
- POJ2082 最大矩形面积
- 求最大矩形面积
- 直方图最大面积矩形
- 最大矩形面积
- 最大连续矩形面积
- POJ2559 最大矩形面积
- 直方图最大矩形面积
- 【t009】最大矩形面积
- 面积最大的矩形
- C++ List的用法(整理)
- 领域驱动设计,读书笔记:4 绑定模型和实现
- Android源码硬件加速简析
- Leetcode659——Split Array into Consecutive Subsequences
- 学习笔记-IO流-系统输出
- 【美团】最大矩形面积(分治法)
- 模式识别绪论
- 操作mysql数据库,出现中文乱码如何解决?
- linux僵尸进程和孤儿进程
- 利用maven搭建modules工程
- 2017.9.4 斜堆 失败总结
- Ubuntu14.04安装Matlab2014b记录
- 《UNIX网络编程 卷2》 笔记: Posix消息队列(1)
- 跨域2