现给出一行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;
}
标签:maxx,最大,int,res,建筑面积,100,建筑,模拟,1000
From: https://www.cnblogs.com/kk3-share/p/16961879.html