nyoj-249-最大长方形

 1 #include<stdio.h>
 2 #include<string.h>
 3 int a[110];
 4 int main()
 5 {
 6     int SS(int t);
 7     int i,n;
 8     while(scanf("%d",&n),n)
 9     {
10         memset(a,0,sizeof(a));
11         for(i=0;i<n;i++)
12             scanf("%d",&a[i]);
13         int s=0;
14         for(i=0;i<n;i++)
15             if(SS(i)>s)//当面积大时  覆盖
16                 s=SS(i);
17         printf("%d
",s);
18     }
19     return 0;
20 }
21 
22 int SS(int t)//用函数对某个点进行左右搜  返回面积
23 {
24     int king=t-1,num=1;
25     while(king>=0&&a[king]>=a[t])
26     {
27         king--;
28         num++;
29     }
30     king=t+1;
31     while(a[king]>=a[t])
32     {
33         num++;
34         king++;
35     }
36     return a[t]*num;
37 }

对每个点进行左右搜索求面积  判定求最大值

原文地址:https://www.cnblogs.com/nylg-haozi/p/3178407.html