设dp[i]表示以i为结尾的LIS长度
对于每个i都会从0-j进行检查 如果a[i] > a[j]说明i可以接在j后面形成一个更长的上升子序列
此时可以更新f[i] = max(f[i], f[j] + 1)
初始化:每个元素都是长度为1的序列
#include<iostream>
using namespace std;
const int N = 1010;
int f[N], a[N];
int n;
int main(){
cin >> n;
for(int i = 1; i <= n; i ++) cin >> a[i];
int res = 0;
for(int i = 1; i <= n; i ++){
f[i] = 1;
for(int j = 1; j <= i; j ++){
if(a[j] < a[i]) f[i] = max(f[i], f[j] + 1);
}
res = max(res, f[i]);
}
cout << res << endl;
return 0;
}

京公网安备 11010502036488号