题目描述
给出一个序列a1,a2,a3,a4,a5,a6,a7...an,求它的一个子序列(设为s1,s2,...sn),使得这个子序列满足这样的性质:s1
输入
每组输入包括两行,第一行为序列长度n,第二行为序列。
输出
输出最长递增子序列的长度。
样例输入 Copy
7
1 7 3 5 9 4 8
样例输出 Copy
4
#include <iostream>
#include<stdio.h>
#include<string.h>
int n,a[1005],b[1005],maxlen,max1;
void solve(){
b[1]=1;
max1=b[1];
for(int i=2;i<=n;i++){
maxlen=0;
for(int j=i-1;j>=1;j--){
if(a[j]<a[i]&&b[j]>maxlen){
maxlen=b[j];
}
}
b[i]=maxlen+1;
if(b[i]>max1){
max1=b[i];
}
}
}
int main (){
while(~scanf("%d",&n)){
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
solve();
printf("%d\n",max1);
}
}