//最长上升子序列o(N^2)可以不连续的子序列, //状态为maxlen[i]表示以a[i]为终点最大上升子序列长度 #include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #include<cstdlib> using namespace std; int maxlen[1020],a[1020]; int main() { int N; scanf("%d",&N); for(int i=1;i<=N;i++) { scanf("%d",&a[i]); maxlen[i]=1;//赋初值为一,每个上升子序列最少为1 } for(int i=2;i<=N;i++) { for(int j=1;j<i;j++) { if(a[i]<a[j]) { maxlen[i]=max(maxlen[i],maxlen[j]+1); } } }printf("%d",*max_element(maxlen+1,maxlen+N+1));//*max_element为求最大值的STL的函数 return 0; }
时间: 2024-11-09 05:10:51