[xxjs96题解]DP入门_最长上升子序列
http://192.168.25.226/problem/xxjs96

f[i]表示从第i个数开始能够得到的最长上升序列的长度,因此得到下图。
因此动态转移方程和 核心代码为:
#include<cstdio> #include<iostream> using namespace std; int f[1000],a[1000]; int main() { int n,max=-100; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) f[i]=1; for(int i=n;i>=1;i--) for(int k=i+1;k<=n;k++) if((a[i]<a[k])&&(f[i]<1+f[k])) f[i]=1+f[k]; for(int i=1;i<=n;i++) if(f[i]>max) max=f[i]; cout<<max; return 0; }
浙公网安备 33010602011771号