求一道题,题目是这样的:
给你一个数字 N 和 N 个数字,求 “ 区间最小值 * 区间宽 ”
比如对于以下输入
5
3 4 5 6 7
的输出是
16
因为在所有区间中,[2, 5]是符合要求的,最小值是4
,宽度是4
暴力代码:
#include <cstdio>
#include <cstdlib>
#define MAX 10000
int N;
int boards[MAX];
int find(){
int max_area = -MAX;
for(int i = 0; i < N; i++){
int min_board = boards[i];
for(int j = i; j < N; j++){
if(boards[j] < min_board){
min_board = boards[j];
}
if(min_board * (j - i + 1) > max_area){
max_area = min_board * (j - i + 1);
}
}
}
return max_area;
}
int main(){
freopen("in.txt", "r", stdin);
scanf("%d", &N);
for(int i = 0; i < N; i++){
scanf("%d", &(boards[i]));
}
printf("%d\n", find());
return 0;
}
听说 lg 上有这题,请问大家有见过这题吗?