请问‘防御导弹’问题。。。。
问题叙述:某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够达到任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在使用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入:
最多20个整数,分别表示导弹依次飞来的高度(雷达给出高度数据是不大于30000的正整数)
输出:两个整数M和N。表示:这套系统最多能拦截 M 枚导弹,如果要拦截所有导弹最少要配备 N 套这种导弹系统。
举例:
输入 300 250 275 252 200 138 245
输出 5 2
欢迎高手们帮忙解答!不胜感激!
下面是我用c写的‘防御导弹’问题,但是总是wrong answer?
不明白啊。。。
#include<stdio.h>
#include<string.h>
#define Max 30001
int a[Max],b[Max];
int main()
{ int h,i,max,max2;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
while(scanf("%d",&h)!=EOF)
{ max=max2=0;
for(i=h;i<=Max-1;i++)
if(a[i]>max)
max=a[i];
a[h]=max+1;
for(i=h-1;i>=0;i--)
if(b[i]>max2)
max2=b[i];
b[h]=max2+1;
}
max=max2=0;
for(i=0;i<=Max-1;i++)
{ if(a[i]>max) max=a[i];
if(b[i]>max2) max2=b[i];
}
printf("%d %d\n",max,max2);
}
搞了半天了 ,还是弄不出结果来 希望高手能帮我改正下这题目的错误。。给我下正确的程序做参考