您的位置:首页 > 其它

南邮 OJ 1031 建筑群最长坡值

2015-08-03 10:51 369 查看


建筑群最长坡值

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 659            测试通过 : 259 

比赛描述


建筑群所有建筑高度分别为h1、h2…hN,可以得到一些单调递减的序列hi1、hi2…hiK,其长度称为建筑群的坡值,这里1≤i1<
i2<…< iK≤N。


你的任务:对于给定的建筑群所有建筑高度,求出建筑群最长坡值。

输入


第一行是建筑群中的建筑数N(1≤N≤1000)。


第二行依次给出各个建筑的高度(大小从0到1000),中间用空格分开。

输出


建筑群最长坡值

样例输入

10

108 60 79 50 119 40 90 230 20 80

样例输出

5

题目来源

南京邮电大学计算机学院首届ACM程序设计大赛(2009)

#include <iostream>
#include <vector>
#define MAX(a,b) (a>b?a:b)
using namespace std;

class building{
public:
int height;
int degree;
};
int main(void){
int N=0,i=0,j=0,maxDeg=0;
building temp;
vector<building> buildings;
cin>>N;
for(i=0;i<N;++i){
cin>>temp.height;
temp.degree=1;
buildings.push_back(temp);
}
for(i=N-1;i>=0;--i){
buildings[i].degree = 1;
for(j=i+1;j<N;++j){
if(buildings[i].height > buildings[j].height){
buildings[i].degree = MAX(buildings[i].degree,buildings[j].degree+1);
}
}
}
for(i=0;i<N;++i){
if(maxDeg<buildings[i].degree){
maxDeg = buildings[i].degree;
}
}
cout<<maxDeg<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息