NYOJ_79_拦截导弹
最长单调递减子序列
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<string> using namespace std; const int MAX=10010; int f[MAX],a[MAX];//f[i]表示i位置最多有多少个可以拦截的导弹 int main() { int t,n,i,j; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=1;i<=n;++i) { f[i]=1;//初始化可以拦截的导弹数为1 scanf("%d",&a[i]); for(j=1;j<i;++j) if(a[i]<a[j]) f[i]=f[i]<f[j]+1?f[j]+1:f[i]; } int Max=0; for(i=1;i<=n;++i) if(Max<f[i]) Max=f[i]; printf("%d\n",Max); } return 0; }