最长上升子序列
注意子序列最短为1,即为自身。
#include<cstdio>
#include<iostream>
#include<string>
#include<map>
#include<vector>
#include<algorithm>
#include<cctype>
using namespace std;
//最长上升子序列
const int maxn =1e5+5;
int dp[maxn];
int arr[maxn];
int main(){
int n;
while(cin>>n){
for(int i = 0; i < n; i++){
cin >> arr[i];
}
int ans = 1;
for(int i = 0; i < n; i++){
dp[i] = 1;
for(int j = 0; j < i ; j++){
if(arr[j] < arr[i] && dp[j] + 1 > dp[i])
dp[i] = dp[j] + 1;
}
ans = max(ans, dp[i]);
}
cout<<ans<<endl;
}
return 0;
}