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 }
对每个点进行左右搜索求面积 判定求最大值