百度的面试
Time Limit: 2000/1000ms (Java/Others)
Problem Description:
在一个二维平面,从左到右竖立n根高度分别为:a[1],a[2],....a[n],且宽度都为1的木板。试给出平面内最大的矩阵面积。
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 }