Document
qwerewr

最大建筑面积(模拟)

现给出一行n个自然数,代表链接建筑的高度,其中高度为0的是地平线,不为零的是建筑,连续的一段相同非零值代表是同一个建筑。现在给这些建筑拍一张照片,输出在这张图片里面积最大的建筑的面积。每个自然数代表宽度1。

输入描述:

第一行输入一个整数n
第二行输入n个整数,代表建筑的高度或地平线hi
1≤n≤1000,0≤hi​≤1000

输出描述:

输出图片里最大面积建筑的面积

示例1

输入

9
0 0 100 100 100 0 200 200 0

输出

400

备注:

1≤n≤1000,0≤hi​≤1000

来源:

牛客竞赛:“可达鸭编程杯”山东大学程序设计精英挑战赛 远航组B题

AC代码:

#include<iostream>
#include<cmath>
using namespace std;

int h[1010];

int main(){
    freopen("in.in" ,"r",stdin); //标准输入
    freopen("out.out","w",stdout); //标准输出
    int n;
    int res = 0;
    int maxx = 0; //记录最大的结果
    cin >> n;
    //读入
    for(int i = 0 ; i < n ; i ++) cin >> h[i];
    res = h[0]; //初始res的值
    for(int i = 1; i < n ; i ++){ //从h[1]开始遍历
        if(h[i] == h[i - 1]) res += h[i]; //判断是否连续并且相同
        else{
            maxx = max(maxx , res); //不连续时,更新结果
            res = h[i]; //不连续,更新res开始的位置
        }
    }
    maxx = max(maxx , res); //最后判断
    cout << maxx << endl; //输出结果
    return 0;
}
posted @ 2022-12-07 00:00  xiao王~  阅读(60)  评论(0)    收藏  举报