1 条题解
-
0
思路
只能选一个方向下降,比较正反方向最长序列。
参考程序(C++11)
#include <bits/stdc++.h> using namespace std; int main(){int k;cin>>k;while(k--){int n;cin>>n;vector<int>a(n),up(n,1),down(n,1);for(int &x:a)cin>>x;int best=1;for(int i=0;i<n;i++){for(int j=0;j<i;j++){if(a[j]<a[i])up[i]=max(up[i],up[j]+1);if(a[j]>a[i])down[i]=max(down[i],down[j]+1);}best=max({best,up[i],down[i]});}cout<<best<<'\n';}}
- 1