nyoj拦截导弹
来源:互联网 发布:电缆标识球数据 编辑:程序博客网 时间:2024/06/05 12:05
/*拦截导弹
时间限制: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*/
/*动态规划 状态转移方程 f[i]=max{f[j]}+1 0<=j<i && h[j]>h[i] */
#include<stdio.h> #include<string.h> #define N 23 int h[N]; int f[N]; //保存f[i]当前最多拦截数0<=i<N int main() { int t,m,i,j,max,max2; scanf("%d",&t); while(t--) { scanf("%d",&m); for(i=0;i<m;i++) scanf("%d",&h[i]); f[0] = 1; max2 = 0; //用以记录最多拦截的个数 for(i=1;i<m;i++) { max = 1; for(j=0;j<=i-1;j++) if (h[i]<h[j] && f[j]+1>max) //不能高于等于前一个h[i]<h[j] max = f[j]+1; //寻找最多的拦截数 f[i] = max; if (max>max2)max2 = max; } printf("%d\n",max2); } return 0; }
0 0
- nyoj 拦截导弹
- NYOJ-79:拦截导弹
- NYOJ 79 导弹拦截
- nyoj 79 导弹拦截
- nyoj-79-拦截导弹
- NYOJ 79 拦截导弹
- NYOJ 79 拦截导弹
- NYOJ 79 拦截导弹
- nyoj 79 拦截导弹
- nyoj 79 拦截导弹
- nyoj 拦截导弹
- NYOJ 79 拦截导弹
- nyoj-79 拦截导弹
- nyoj 拦截导弹
- nyoj 79 拦截导弹
- nyoj拦截导弹
- NYOJ 79 拦截导弹
- nyoj 79拦截导弹
- Database之二 函数
- Oracle 11g R2 x64无法使用sql developer的解决方案
- Jsp生成页面验证码的方法
- Linux正则表达式awk讲解
- 开发环境简介合集
- nyoj拦截导弹
- [刷题]Find Minimum in Rotated Sorted Array II
- HttpClient使用Post和Get提交参数
- 12569 - Planning mobile robot on Tree (EASY Version)
- Struts2(2)
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- Expression : invalid operator < 解决方法
- 关于block使用需要注意的地方
- 步步为营(三)贪心(2)选择不相交区间