这题关于动态规划,还是比较经典的
本质是求最长上升子串
#include<stdio.h>
#include<string.h>

int main(void)
{
    int num;
    scanf("%d",&num);
    int a[200]={0};
    int step[200]={0};
    for(int i=0;i<num;i++)
    {
        scanf("%d",&a[i]);
    }
    for(int i=0;i<num;i++)
    {
        step[i]=1;
    }
    for(int i=1;i<num;i++)
    {
        int max=0;
        for(int j=0;j<i;j++)
        {
            if(a[i]>a[j])
            {
                max=(step[j]>max)?step[j]:max;
            }
        }
        step[i]=max+1;
    }
    int maxcnt=0;
    for(int i=0;i<num;i++)
    {
        maxcnt=(step[i]>maxcnt)?step[i]:maxcnt;
    }
    printf("%d",maxcnt);
    return 0;
}