描述
建筑群所有建筑高度分别为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
#include<iostream> #include<algorithm> using namespace std; int main() { //freopen("a.txt","r",stdin); int n,*a,*count,max; cin>>n; a=(int *)malloc(n*sizeof(int)); count=(int *)malloc(n*sizeof(int)); int i,j; for(i=0;i<n;i++) cin>>a[i]; for(i=0;i<n;i++) count[i]=0; count[n-1]=1; for(i=n-1;i>=0;i--) { max=count[i]; for(j=i+1;j<n;j++) { if(a[i]>a[j]) { if(max<count[j]) max=count[j]; } count[i]=max+1; } } max=count[0]; for(i=0;i<n;i++) if(count[i]>max) max=count[i]; cout<<max<<endl; return 0; }