导弹拦截(贪心算法)

       某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统,但是这种拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。
某天,雷达捕捉到敌国的导弹来袭,由于该系统还在试用阶段。所以一套系统有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度不大于30000的正整数)。计算要拦截所有导弹最小需要配备多少套这种导弹拦截系统。

输入

n颗依次飞来的高度(1≤n≤1000)。

输出

要拦截所有导弹最小配备的系统数k。

样例输入

389 207 155 300 299 170 158 65

样例输出

2

 

解题关键

 1.这道题要定义两个数组,一个是导弹高度,一个是系统数量

(考虑最坏情况,系统数一定要等于导弹数)

2.输入时,因为没有进行输入导弹个数,所以这里要用到while循环进行输入,还要定义n进行记录导弹数量,输入完成后n-1,导弹数量k设为1,拦截系统高度lz[1]=第一枚导弹高度dd[1]

(输入完成了,一定要按ctrl+z键,不然无法结束输入)

3.运用嵌套循环,第一层for是遍历每一个导弹的高度,需定义导弹是否被拦截变量——flag,第二层循环时,需要用此导弹高度去遍历每一个拦截系统最大拦截高度,若dd[i]<=lz[j]则将拦截系统最大拦截高度设为导弹高度,flag=1,退出循环

(拦截每一颗导弹都需在第一层循环时将flag设为0)

4.若flag仍等于0,则增加拦截系统数量,将新拦截系统最大拦截高度设为此导弹发射高度

 

 

谢谢大家阅读,后续会发布导弹拦截用动态规划法求解

 

 

posted @   廖文轩  阅读(993)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示