描述
设有整数序列 b1,b2,b3,…,bm,若存在 i1<i2<i3<in,且 bi1≤bi2≤bi3...≤bin,则称 b1,b2,b3,b3...bm中有长度为 n 的不下降序列 bi1,bi2,bi3,...bin。求序列中最大不下降子序列长度 k。
输入描述
输入文件为两行,第一行输入 m( 1≤m≤10000 ),表示有 m 个整数,接下来的第二行输入 m 个整数。
#include<bits/stdc++.h>
using namespace std;
int a[10001],i,n,x,p,k,j;
int main(){
cin>>n;
for(i=0;i<n;i++){
cin>>x;
p=0;
for(j=1;j<=k;j++){
if(a[j]>x){//判断是否变小
p=j;
break;
}
}
if(p==0){//没有变小
k++;
a[k]=x;
}else{ //变小
a[p]=x;
}
}
cout<<k;
}