XYNUOJ 1774 最少拦截系统
- :先把第一个拦截系统高度初始化为第一个飞来的导弹的高度,然后让下一个导弹与所有拦截系统比较过去,情况如下
- 从第一个拦截系统开始比较,
- ①若第 i 个导弹高度低于第 j 个拦截系统的高度,则将第 j 个拦截系统高度更新为第 i 个导弹的高度;
- ②若第 i 个导弹高度比所有拦截系统的高度都高,则在加入一个拦截系统,该拦截系统高度就是第 i 个导弹的高度;
-
#include<stdio.h>
int main()
{
int n,a[1000],i,b[1000],j;//b[1000]拦截系统
while(scanf("%d",&n)!=EOF)
{
int t=0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
b[t]=a[0];
for(i=1;i<n;i++)
{
for(j=0;j<=t;j++)
{
if(a[i]<=b[j])
{
b[j]=a[i];
break;
}
}
if(j>t)
{ //新增一个拦截系统
t++;
b[t]=a[i];
}
}
printf("%d\n",t+1);
}
return 0;
}//AC