博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nyoj------79拦截导弹
阅读量:6469 次
发布时间:2019-06-23

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

拦截导弹

时间限制:
3000
 ms  |  内存限制:
65535
 KB
难度:
3
 
描述

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

 
输入
第一行输入测试数据组数N(1<=N<=10) 接下来一行输入这组测试数据共有多少个导弹m(1<=m<=20) 接下来行输入导弹依次飞来的高度,所有高度值均是大于0的正整数。
输出
输出最多能拦截的导弹数目
样例输入
28389 207 155 300 299 170 158 65388 34 65
样例输出
62
来源
上传者
这道题由于数据给的很水,所以做法多样,我才用的是搜索...
代码如下:
1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 int n,m,cnt,ans; 7 int str[25]; 8 void dfs(int a,int step) 9 {10 if(step>m) return ;11 12 13 if(a>str[step]||a==0)14 {15 cnt++; //用来统计拦截的数目16 if(cnt>ans) ans=cnt; //记录下最大的最大值17 dfs(str[step],step+1); //就将最大值作为标尺18 cnt--;19 }20 dfs(a,step+1); //表示跳过这个值21 }22 int main()23 {24 int i,j;25 scanf("%d",&n);26 while(n--)27 {28 ans=cnt=0;29 scanf("%d",&m);30 for(i=1 ; i<=m ; i++)31 scanf("%d",&str[i]);32 dfs(0,1);33 printf("%d\n",ans);34 }35 return 0;36 }
View Code

 

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

你可能感兴趣的文章
HDU 1402 A * B Problem Plus FFT
查看>>
[CareerCup] 17.3 Factorial Trailing Zeros 求阶乘末尾零的个数
查看>>
Security updates and resources
查看>>
深入理解JavaScript系列(25):设计模式之单例模式
查看>>
DNS为什么通常都会设置为14.114.114.114
查看>>
给定一个序列,判断该序列是否为二叉树查找树的后序遍历序列
查看>>
Sqoop架构(四)
查看>>
golang copy函数
查看>>
《你有多少问题要请示》精华集粹
查看>>
深度 | 机器学习敲门砖:任何人都能看懂的TensorFlow介绍【转】
查看>>
leveldb学习:DBimpl
查看>>
MySQL存储引擎--MYSIAM和INNODB引擎区别
查看>>
[Recompose] Stream Props to React Children with RxJS
查看>>
打印图片
查看>>
SHOW CREATE DATABASE Syntax
查看>>
rsync常见问题及解决办法
查看>>
AKM项目轶事之GBS同事转入GDC
查看>>
MySQL日期 专题
查看>>
C#中禁止程序多开
查看>>
分布式缓存Redis使用以及原理
查看>>