分析
这道题我只得了90分,不知道问题存在哪里。我使用最简单的方法–穷举法。获取矩形的最大高度,对矩形高度进行遍历(1–Hmax)。当h=1时,找到连续的最大宽度,此时为6,面积即为1*6;当h=2时,第二个矩形高度小于2,则宽度“断了”,mh=h,h=0。再向后找宽为4,面积则为2*4;以此类推,直到最大高度。
代码
#include<iostream>
using namespace std;
int main()
{
int n = 0;
int max = 0;
int kuan = 0;
int mkuan = 0;
cin >> n;
int juxing[10240] = { 0 };
int mianji[10240] = { 0 };
for (int i = 0; i < n; i++)
{
cin >> juxing[i];
if (max < juxing[i])
{
max = juxing[i];
}
}
for (int i = 1; i <= max; i++)
{
for (int j = 0; j < n; j++)
{
if (juxing[j] >= i)
{
kuan++;
}
else
{
if (mkuan < kuan)
{
mkuan = kuan;
}
kuan = 0;
}
}
if (mkuan < kuan)
mkuan = kuan;
mianji[i] = mkuan * i;
mkuan = 0;
kuan = 0;
}
int smax = 0;
for (int i = 1; i <= max; i++)
{
if (smax < mianji[i])
{
smax = mianji[i];
}
}
cout << smax;
//system("pause");
return 0;
}