博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最少拦截系统
阅读量:5748 次
发布时间:2019-06-18

本文共 1561 字,大约阅读时间需要 5 分钟。

Problem Description
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.
怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
 

 

Input
输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
 

 

Output
对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.
 

 

Sample Input
8 389 207 155 300 299 170 158 65
 

 

Sample Output
2
1 #include
2 #define INF 0x7ffffff 3 #define MAXN 10000 4 int dp[MAXN]; //dp[i]代表第i个拦截系统当前拦截的高度 5 int main() 6 { 7 int n,x,i,res,flag; //res拦截系统个数 flag标记是否可以拦截 8 int minh; //用来找离要拦截导弹最近的拦截系统 9 while(scanf("%d",&n)!=EOF)10 {11 res=0;12 while(n--)13 {14 scanf("%d",&x);15 flag=0; //flag=0为不能拦截16 minh=INF; //每次循环都更新17 int tempi; //tempi指向发动拦截的拦截系统 18 for(i=0;i
dp[i]-x) //minh用来比较res个拦截系统 哪个拦截高度离要拦截的导弹更近21 { //找到最近的后用tempi标记那个,并更新dp[tempi]22 minh=dp[i]-x; 23 //dp[i]=x;24 tempi=i;25 flag=1; //拦截成功26 } 27 }28 if(flag==0) //增加拦截系统个数并更新最新拦截系统高度29 {30 dp[res]=x;31 res++;32 } 33 else dp[tempi]=x; //更新先前拦截系统高度34 }35 printf("%d\n",res); 36 } 37 return 0;38 }
View Code

 

转载地址:http://ljhzx.baihongyu.com/

你可能感兴趣的文章
F#初学笔记06
查看>>
实战:将企业域名解析委派给企业DNS服务器
查看>>
在Lync 2013环境部署Office Web Apps
查看>>
微软大会Ignite,你准备好了么?
查看>>
读书笔记-高标管事 低调管人
查看>>
Master带给世界的思考:是“失控”还是进化
查看>>
用户和开发者不满苹果iCloud问题多多
查看>>
java.lang.UnsatisfiedLinkError:no dll in java.library.path终极解决之道
查看>>
我的工具:文本转音频文件
查看>>
【许晓笛】从零开始运行EOS系统
查看>>
【跃迁之路】【460天】程序员高效学习方法论探索系列(实验阶段217-2018.05.11)...
查看>>
C++入门读物推荐
查看>>
TiDB 源码阅读系列文章(七)基于规则的优化
查看>>
面试中会遇到的正则题
查看>>
Spring之旅第八站:Spring MVC Spittr舞台的搭建、基本的控制器、请求的输入、表单验证、测试(重点)...
查看>>
数据结构与算法——常用排序算法及其Java实现
查看>>
你所不知的Webpack-多种配置方法
查看>>
React.js 集成 Kotlin Spring Boot 开发 Web 应用实例详解
查看>>
webpack+typescript+threejs+vscode开发
查看>>
python读excel写入mysql小工具
查看>>