# 最长上升子序列
## 题目描述
这是一个简单的动规板子题。
给出一个由 $n(n\le 5000)$ 个不超过 $10^6$ 的正整数组成的序列。请输出这个序列的**最长上升子序列**的长度。
最长上升子序列是指,从原序列中**按顺序**取出一些数字排在一起,这些数字是**逐渐增大**的。
## 输入格式
第一行,一个整数 $n$,表示序列长度。
第二行有 $n$ 个整数,表示这个序列。
## 输出格式
一个整数表示答案。
## 样例 #1
### 样例输入 #1
```
6
1 2 4 1 3 4
```
### 样例输出 #1
```
4
```
## 提示
分别取出 $1$、$2$、$3$、$4$ 即可。
代码实现
#include<iostream>
using namespace std;
const int N=5010;
int a[N],f[N];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++){
f[i]=1; //只有a[i]一个数
for(int j=1;j<i;j++){
if(a[j]<a[i])f[i]=max(f[i],f[j]+1);
}
}
int ans=0;
for(int i=1;i<=n;i++)ans=max(ans,f[i]);
cout<<ans<<endl;
return 0;
}