描述
一个国家为了防御敌人的导弹袭击前驻车雷达有用吗,开发了导弹拦截系统。但是这个导弹拦截系统有个缺陷:虽然它的第一弹可以达到任意高度,但是后面的每一个弹都不能比前一个高。一天,雷达探测到一枚来自敌国的来袭导弹。由于该系统仍处于试验阶段,只有一个系统前驻车雷达有用吗,因此可能无法拦截所有导弹。依次输入导弹飞行高度(雷达给出的高度数据为不大于30000的正整数),计算这个系统最多可以拦截多少导弹?导弹的数量不应超过100。
进入
一行中有几个整数,分别代表导弹依次飞行的高度。用空格分隔两个数字。
输出
代表系统可以拦截的最大导弹数量的数字。
#include
using namespace std;
int n=0;
int a[1001];
int b[1001];
int ans=1;
int f[1001];
int main()
{
while(cin>>a[++n]);
n--;
int l=1;
b[1]=1e9;
for(int i=1;i<=n;i++)
{
for(int j=l;j>0;j--)
{
if(b[j]>=a[i])
{
b[j+1]=a[i];
l=max(l,j+1);
break;
}
}
}
cout<
输入样本 1
389 207 155 300 299 170 158 65
样本输出 1
6