给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。
输入格式:
第一行包含整数 N。
第二行包含 N 个整数,表示完整序列。
1≤N≤1000,−109≤数列中的数≤109
输出格式:
输出一个整数,表示最大长度,结尾无空格换行。
输入样例:
在这里给出一组输入。例如:
7
5 2 8 3 1 4 5
输出样例:
在这里给出相应的输出。例如:4
#include <bits/stdc++.h>
using namespace std;
int a[10001], f[10001];
int n,ans = -1;
int main()
{
scanf("%d", &n);
for(int i=1; i<=n; i++)
{
scanf("%d", &a[i]);
f[i] = 1;
}
for(int i=1; i<=n; i++)
for(int j=1; j<i; j++)
if(a[j] < a[i])
f[i] = max(f[i], f[j]+1);
for(int i=1; i<=n; i++)
ans = max(ans, f[i]);
printf("%d", ans);
return 0;
}