//20131203
#include<stdio.h>
int main()
{
int n;//矩形的数量n
scanf("%d",&n);
int arr[n];
for(int i=0;i<n;i++)
scanf("%d",&arr[i]);
//遍历每个矩形
int s=arr[0];//将最大的初始面积设置为第一个矩形的面积
int low=arr[0];//设置组合最低高度
int low_point=0;
for(int i=1;i<n;i++)//从第二个开始遍历
{
//判断是否更新最低高度low
if(arr[i]<low)
{
low=arr[i];
low_point=i;
}
//先判断该矩形自己的面积
if(arr[i]>s)
s=arr[i];
//再判断组合面积,组合面积由个数i+1和最低高度决定
//从前往后遍历
for(int j=0;j<i;j++)
{
int max=0;
//当是最低高度之前的
if(j<=low_point)
{
max=(i+1-j)*low;
}
//如果是最低点之后的
else
{
//找出该点到求点中最低点然后乘个数
int low_in=arr[j];
for(int k=j;k<=i;k++)
{
if(arr[k]<low_in)
low_in=arr[k];
}
max=(low_in)*(i+1-j);
// printf("i:%d j:%d low_in:%d max:%d\n",i,j,low_in,max);
}
if(max>s)
s=max;
// printf("%d\n",s);
}
// printf("%d",s);
}
printf("%d",s);
return 0;
}
CSP201312-3最大的矩形 c语言(带注释)
最新推荐文章于 2022-07-19 02:25:00 发布