输入:第一行一个数字n表示输入序列长度,接下来第二行有n个数字表示输入序列。
输出:一个数字表示最长子序列(序列可不连续)的长度。
eg:
输入:
5
1 2 1 3 4
输出:
4
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n;
cin >> n;
if(n==0)
return 0;
vector<int> v(n,0);
vector<int> dp(n+1,0);
dp[1]=1;
for(int i=0; i<n; i++){
cin >> v[i];
}
for(int i=1; i<n; i++){
int j=i-1;
while(j>=0 && v[i]<v[j]){
j--;
}
if(j<0)
dp[i+1] = dp[i];
else
dp[i+1] = max(dp[i], dp[j+1]+1);
}
cout << dp[n] << endl;
return 0;
}
笔试的时候自己写出来的代码,欢迎指正!