题目链接:https://cn.vjudge.net/problem/OpenJ_Bailian-2757
思路:dp入门题,最优子结构,状态,状态转移方程,完事。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 1005;
int main()
{
int N,a[MAXN],ans[MAXN]; // ans[i] // 以i为结尾的前i个数的最长上升子序列
cin >> N;
for(int i=1;i<=N;i++) {
cin >> a[i];
ans[i] = 1;
}
for(int i=2;i<=N;i++)
for(int j=1;j<i;j++)
if(a[i] > a[j])
ans[i] = max(ans[i],ans[j]+1);
cout << *max_element(ans+1,ans+N+1) << endl;
}