南邮 OJ 1031 建筑群最长坡值

建筑群最长坡值

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

比赛描述

建筑群所有建筑高度分别为h1h2…hN,可以得到一些单调递减的序列hi1hi2…hiK,其长度称为建筑群的坡值,这里1i1< i2<…< iKN

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



输入

第一行是建筑群中的建筑数N1N1000)。

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

输出

建筑群最长坡值

样例输入

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;
}




你可能感兴趣的:(ACM,南邮OJ,建筑群最长坡值)