一、线性动态规划
最长严格上升子序列
#include<iostream> #include<cstdio> using namespace std; int n,ans; int a[5004],dp[5004]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) { for(int j=1;j<i;j++) { if(a[j]<a[i]) dp[i]=max(dp[i],dp[j]+1); ans=max(ans,dp[i]); } } printf("%d\n",ans+1); return 0; }