码迷,mamicode.com
首页 > 其他好文 > 详细

CCF 201312-3 最大的矩形

时间:2019-09-05 23:25:28      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:dmi   要求   一个   左右   min   区间   i++   find   ret   

未完。。。

//要求最大矩形,需要最大的长度和高度。
//划分区间的方法,当某高度低于左右两侧高度时,则以他为基准,分别算左右面积。
//设置一个变量记录全局最大面积。
//当长度为1时,计算完当前面积,并与最大面积比较后结束。

 

 1 #include<cstdio>
 2 int MS=0;
 3 int height[1000+5];
 4 int findMin(int s,int e){
 5     int m=s;
 6     for(int i=s+1;i<e;i++){
 7         if(height[i]<height[m])
 8             m=i;
 9     }
10     return m;
11 }
12 void part(int s,int e,int low){
13     int mid,tmp;
14     if(s==e){
15         if(MS<height[s])
16             MS=height[s];
17         return ;
18     }else{
19         tmp=(e-s+1)*height[low];
20         if(MS<tmp)
21             MS=tmp;
22         if(s==low){
23             mid=findMin(s+1,e);
24             part(s+1,mid,mid);
25             part(mid,e,mid);
26         }else if(e==low){
27             mid=findMin(s,e);
28             part(s,mid,mid);
29             part(mid,e-1,mid);
30         }
31     }
32 }
33 int main(){
34     int n,i,mid;
35     scanf("%d",&n);
36     for(i=0;i<n;i++){
37         scanf("%d",height+i);
38     }
39     mid=findMin(0,n);
40     part(0,mid,mid);
41     part(mid,n-1,mid);
42     printf("%d",MS);
43     return 0;
44 }

 

CCF 201312-3 最大的矩形

标签:dmi   要求   一个   左右   min   区间   i++   find   ret   

原文地址:https://www.cnblogs.com/cuphead/p/11470205.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!