ACM_百度的面试

百度的面试

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

在一个二维平面,从左到右竖立n根高度分别为:a[1],a[2],....a[n],且宽度都为1的木板。试给出平面内最大的矩阵面积。

Input:

输入包含多组测试数据,每一组数据的第一行输入正整数n(<=5000),下面一行输入序列a[1],a[2],...a[n],其中1<=a[i]<=1000。

Output:

对于每一组测试数据,输出最大的矩形面积。

Sample Input:

5
6 7 3 8 9
3
2 1 4

Sample Output:

16
4
解题思路:题目的意思就是找出最大的矩形面积,思路就是每个当前高度向左向右所能伸长的最大宽度*当前高度,再跟最大值比较即可,水过!
AC代码:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int a[5005],n,Maxarea,len;
 4 int main()
 5 {
 6     while(cin>>n){
 7         for(int i=0;i<n;++i)cin>>a[i];
 8         Maxarea=0;
 9         for(int i=0;i<n;++i){
10             len=1;
11             for(int j=i+1;j<n && a[i]<=a[j];++j)++len;
12             for(int j=i-1;j>=0 && a[i]<=a[j];--j)++len;
13             Maxarea=max(Maxarea,a[i]*len);
14         }
15         cout<<Maxarea<<endl;
16     }
17     return 0;
18 }

猜你喜欢

转载自www.cnblogs.com/acgoto/p/9031291.html