nyoj------79拦截导弹
2024-08-27 14:31:35
拦截导弹
时间限制:3000 ms | 内存限制:65535 KB
难度:3
- 描述
-
某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于等于前一发的高度。某天,雷达捕捉到敌国导弹来袭。由于该系统还在试用阶段,所以只用一套系统,因此有可能不能拦截所有的导弹。
- 输入
- 第一行输入测试数据组数N(1<=N<=10) 接下来一行输入这组测试数据共有多少个导弹m(1<=m<=20) 接下来行输入导弹依次飞来的高度,所有高度值均是大于0的正整数。
- 输出
- 输出最多能拦截的导弹数目
- 样例输入
-
2
8
389 207 155 300 299 170 158 65
3
88 34 65 - 样例输出
-
6
2 - 来源
- [张洁烽]原创
- 上传者
- 张洁烽
- 这道题由于数据给的很水,所以做法多样,我才用的是搜索...
- 代码如下:
-
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int n,m,cnt,ans;
int str[];
void dfs(int a,int step)
{
if(step>m) return ; if(a>str[step]||a==)
{
cnt++; //用来统计拦截的数目
if(cnt>ans) ans=cnt; //记录下最大的最大值
dfs(str[step],step+); //就将最大值作为标尺
cnt--;
}
dfs(a,step+); //表示跳过这个值
}
int main()
{
int i,j;
scanf("%d",&n);
while(n--)
{
ans=cnt=;
scanf("%d",&m);
for(i= ; i<=m ; i++)
scanf("%d",&str[i]);
dfs(,);
printf("%d\n",ans);
}
return ;
}
最新文章
- Jquery揭秘系列:谈谈bind,one,live,delegate事件及实现
- android 命名 数组 所有国家 String[] COUNTRIES
- MDI窗体容器 权限设置
- sql子查询 嵌套SELECT语句
- Linux里如何查找文件内容
- nodejs express测试
- protocolbuffe
- 关于spring管理hibernate事物
- 多线程 Worker Thread 模式
- 发掘ListBox的潜力(二):鼠标拖放插入点提示
- PHP 文件上传全攻略
- 浅谈 Axios 在 Vue 项目中的使用
- thinkphp实现like模糊查询实例
- odoo开发笔记 -- 模型字段定义中设置默认值
- Confluence 6 修改站点的标识图片
- nodejs的koa2框架
- SQL Server 跨域访问
- final发布48小时用户调查报告
- oracle 学习blogs
- bioperl 格式化genebank的输出