1031-建筑群最长坡值

描述

 

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

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

输入

 

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

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

输出

 

建筑群最长坡值

样例输入

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

  

原文地址:https://www.cnblogs.com/Rosanna/p/3436608.html