最长递增子序列

xiaoxiao2021-02-28  72

题目描述

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

输入描述

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

输出描述

输出所求的结果。

输入样例

10 4 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]); }

转载请注明原文地址: https://www.6miu.com/read-79159.html

最新回复(0)