分析:需要拦截的导弹数量=最长上升子序列数
每一个后面比前面大的 拦截装置+1;
体会一下
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=1e5+10;
int a[maxn],dp[maxn];
int main(){
int n;
while(~scanf("%d",&n)) {
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
dp[i]=1;
}
int maxx=0;
//最长上升子序列
for(int i=0;i<n;i++){
for(int j=0;j<i;j++){
if(a[i]>a[j] ) dp[i]=max( dp[i],dp[j]+1);
}
maxx=max(dp[i],maxx);
}
printf("%d\n",maxx);
}
return 0;
}