题目描述
某国为了防御敌国的导弹袭击,研发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不 能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试验阶段,因此1套系统可能不能拦截所有的导弹。
输入
输入数据只有一行,数据之间用空格隔开,表示导弹依次飞来的高度(<=100 枚,<=30000 )。
输出
一个数据,该数据表示若要拦截所有导弹至少要多少套这样的系统。
样例输入
300 150 120 540 360 471 140 364 146 340
样例输出
4
#include<stdio.h>
#include<string.h>
int main () {
int k,j,l,max,a[150];
for(k=0; ; k++) {
scanf("%d",&a[k]);
if(getchar()=='\n')
break;
}
int n=k+1,i;
int t=0;
//printf("%d\n",n);
for(i=0; i<n; i++)
{
if(a[i]!=-1)// 已经处理过的导弹不进行筛选
{
int max=a[i];//把当前导弹的高度当做最大
t++;
for(j=i+1; j<n; j++)
{
if(a[j]<=max&&a[j]!=-1)//a【i】 小于等于前一个都能通过
{
max=a[j];//此时通过的导弹高度变为筛选条件
a[j]=-1;//做标记 不费时间 已处理过
}
}
}
}
printf("%d\n",t);
return 0;
}