描述
建筑群所有建筑高度分别为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;
}