alt

#include <stdio.h>

int main()
{
    int num;
    int step[200];
    int max_step = 1;
    int dp[300] = {0};
    
    memset(step, 0, sizeof(int) * 200);
    if(scanf("%d", &num) != EOF)
    {
        for(int i = 0; i < num; i++ )
        {
            scanf("%d", &step[i]);
        }
    }
   
    dp[0] = 1;
    for(int i = 1; i < num; i++)
    {
        int maxval = 0;
        for(int j = 0; j < i; j++)
        {
            /* 当前桩比它前面的桩大,则踩它 */
            if(step[i] > step[j])
            {
                /* 踩此桩和踩其他桩,谁大踩谁 */
                maxval = maxval > (dp[j]) ? maxval : dp[j];
            }
        }
        /* 当前桩步数加1 */
        dp[i] = maxval+1;
        /* 和最大步数比较 ,取最大值 */
        max_step = (max_step > dp[i]) ? max_step : dp[i];
    }
        
    printf("%d\n", max_step);
    
    return 0;
}