SY1371

    xiaoxiao2025-11-03  4

                                              导弹拦截

    题目描述

    某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截 系统有一个缺陷:虽然它的第一发炮弹能够达到任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试 用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。

    输入

    最多20个整数,分别表示导弹依次飞来的高度(雷达给出高度数据是不大于30000的正整数)

    输出

    第一行输出最多能拦截的导弹数 第二行输出要全部拦截最少需要的拦截系统数

    样例输入

    389 207 155 300 299 170 158 65

    样例输出

    6 2

    #include<stdio.h> int main() { int i=0, j, k=1, n=0, m=0, a[99], b[99], c[99]; while(scanf("%d", &a[++i])!=EOF) { b[i]=1; for(j=1; j<i; j++) if(a[i]<=a[j]&&b[i]<b[j]+1) b[i]=b[j]+1; if(b[i]>m) m=b[i]; for(j=1; j<k; j++) if(c[j]>=a[i]) { c[j]=a[i]; break; } if(k==j) c[k++]=a[i]; } printf("%d\n%d\n", m, k-1); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1303796.html
    最新回复(0)