链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1136
题意:裸的最长上升子序列。复杂度O(n^2).
#include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> #include<vector> using namespace std; const int maxn=1005; int n; int a[maxn],dp[maxn]; int LIS() { dp[0]=1; int ans=1; for(int i=1;i<n;i++) { int s=0; for(int j=0;j<i;j++)//和前面的比较 if(dp[j]>s && a[j]<a[i]) s=dp[j]; dp[i]=s+1; if(dp[i]>ans) ans=dp[i];//最大的 } return ans; } int main() { int t; cin>>t; while(t--) { cin>>n; for(int i=0;i<n;i++) cin>>a[i]; if(t==0)//格式 cout<<LIS(); else cout<<LIS()<<endl<<endl; } return 0; }
究竟是我抛弃了历史,还是历史遗弃了我。