注意:本题的实际取值范围与题干不符,按题目来写只会得90分,需要扩大数组大小与高度h的范围!
思路:遍历数组,从每个小长方形开始与后面递增数量的长方形进行组合,记录组合后的矩形的宽度(width)与高度(min),相乘就是矩形的面积,再记录面积的最大值,最后进行输出。0算法,完全暴力
#include <stdio.h>
int h[2001]; //题干为1000
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &h[i]);
}
int min = 100001; //题干为10000
int Smax = 0;
int width = 0;
for (int i = 0; i < n; i++) {
min = 100001;
for (int o = i; o < n; o++) {
if (h[o] < min) {
min = h[o];
}
width++;
if (Smax < width * min) {
Smax = width * min;
}
}
width = 0;
}
printf("%d", Smax);
}