O(N^2)最長上升子序列
阿新 • • 發佈:2017-08-09
turn ++ blog names i++ 最長上升子序列 連續 ios pan
//最長上升子序列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; }
O(N^2)最長上升子序列