最长递增子序列

来源:互联网 发布:软件研发立项报告 编辑:程序博客网 时间:2024/06/18 11:36

题目描述

求一个数列中,递增的最长的子序列(不要求连续)的长度。

输入描述

第一行输入一个整数n(n<1000)。
第二行输入n个整数(每个整数小于1000)组成的一个数列,相互之间用空格隔开。

输出描述

输出所求的结果。

输入样例

104 2 9 4 9 6 7 2 9 6

输出样例

5

提示


AC代码如下:

#include<stdio.h>#include<stdlib.h>#include<string.h>int ai[1001];int dp[1001];int mmax=0;int num=0;int main(){    int n,i,j;    memset(dp,0,sizeof(dp));    scanf("%d",&n);    for( i=1;i<=n;i++)    scanf("%d",&ai[i]);    for(i=1;i<=n;i++)    {        dp[i]=1;        for(j=1;j<i;j++)        {             if(ai[i]>ai[j]&&dp[i]<dp[j]+1)             {                  dp[i]=dp[j]+1;             }        }        if(dp[i]>dp[mmax])        {            mmax=i;        }    }   printf("%d\n",dp[mmax]);}