找出面积最大的矩形
序号:#50 难度:有挑战 时间限制:1000ms 内存限制:10M
描述
在一个平面图上,有多个宽度固定为1,高度不同的矩形并列排着,在这些矩形所组成的图形中,能够切割出的最大矩形的面积是多少? 数据范围:0 < 高度 < 100
举例:高度为2,3,2的三个矩形所组成的图形,能够切割出的最大的矩形面积为6。见下图。
输入
一组正整数,分别用逗号隔开,表示每个矩形的高度
输出
一个整数,表示组合成的最大的矩形面积
输入样例
2,3,2
5,6,7,8,3
输出样例
6
20
#include<bits/stdc++.h>
using namespace std;
int main()
{
char str[10001];
while(cin.get(str,10000)){
vector<int>vec;
char x[10000];
int n;
int count=0;
char *p=strtok(str,",");
while(p){
sscanf(p,"%d",&n);
vec.push_back(n);
count++;
p=strtok(NULL,",");
}
int area=0;
int max_=0;
int l1,l2;
for(int i=0;i<count;i++)
{
l1=0;
l2=0;
for(int j=i;j<count;j++)
{
if(vec[j]>=vec[i])
l1++;
else
break;
}
for(int j=i-1;j>=0;--j)
{
if(vec[j]>=vec[i])
l2++;
else
break;
}
area=(l1+l2)*vec[i];
if(area>max_)
max_=area;
}
cout<<max_<<endl;
}
return 0;
}