序列性dp-wikioi-1576-拦截导弹-

题目:http://www.wikioi.com/problem/1044/

int
v[21],f[21]; int ans; int main() { int n=0,x; while(scanf("%d",&x)==1) v[++n]=x; /*///////////////////////////////////////////////////
int n=8; for(int i=1;i<9;++i) cin>>v[i]; *//////////////////////////////////////////////////// ///f[i] 截止至第i个 最多能拦截的导弹数目 for(int i=0;i<=n;++i) f[i]=1;

for(int i=1;i<=n;++i)   for(int j=1;j<i;++j)     if(v[j]>v[i]&&f[i]<f[j]+1) //第j个加入当前能否拦截更多       f[i]=f[j]+1;
ans
=1; for(int i=1;i<=n;++i)   if(f[i]>ans) ans=f[i];
cout
<<ans<<endl; ///////////////////////////////////////////////// /////////////////////////////////////////////////// //f[i] 截止至第i个至少需要的系统数目 for(int i=0;i<=n;++i) f[i]=1;
for(int i=1;i<=n;++i)   for(int j=1;j<i;++j)     if(v[j]<v[i]&&f[i]<f[j]+1) //第j个加入当前能否拦截更多       f[i]=f[j]+1;
ans
=1; for(int i=1;i<=n;++i)   if(f[i]>ans) ans=f[i];
cout
<<ans<<endl; /////////////////////////////////////////////////// return 0; }
原文地址:https://www.cnblogs.com/tinyork/p/3862123.html