最大建筑面積(模擬)
現(xiàn)給出一行n個(gè)自然數(shù),代表鏈接建筑的高度,其中高度為0的是地平線,不為零的是建筑,連續(xù)的一段相同非零值代表是同一個(gè)建筑。現(xiàn)在給這些建筑拍一張照片,輸出在這張圖片里面積最大的建筑的面積。每個(gè)自然數(shù)代表寬度1。
輸入描述:
第一行輸入一個(gè)整數(shù)n
第二行輸入n個(gè)整數(shù),代表建筑的高度或地平線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
來(lái)源:
牛客競(jìng)賽:“可達(dá)鴨編程杯”山東大學(xué)程序設(shè)計(jì)精英挑戰(zhàn)賽 遠(yuǎn)航組B題
AC代碼:
#include<iostream>
#include<cmath>
using namespace std;
int h[1010];
int main(){
freopen("in.in" ,"r",stdin); //標(biāo)準(zhǔn)輸入
freopen("out.out","w",stdout); //標(biāo)準(zhǔn)輸出
int n;
int res = 0;
int maxx = 0; //記錄最大的結(jié)果
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]; //判斷是否連續(xù)并且相同
else{
maxx = max(maxx , res); //不連續(xù)時(shí),更新結(jié)果
res = h[i]; //不連續(xù),更新res開始的位置
}
}
maxx = max(maxx , res); //最后判斷
cout << maxx << endl; //輸出結(jié)果
return 0;
}

浙公網(wǎng)安備 33010602011771號(hào)