九度OJ 1112:拦截导弹 (DP、最长下降子序列)
2015-10-23 21:35
218 查看
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:3124
解决:1525
题目描述:
某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。
输入:
每组输入有两行,
第一行,输入雷达捕捉到的敌国导弹的数量k(k<=25),
第二行,输入k个正整数,表示k枚导弹的高度,按来袭导弹的袭击时间顺序给出,以空格分隔。
输出:
每组输出只有一行,包含一个整数,表示最多能拦截多少枚导弹。
样例输入:
样例输出:
来源:2007年北京大学计算机研究生机试真题
思路:
该题的本质是求最长下降子序列。可以用动态规划来做,最好的算法复杂度应该是O(nlogn)的。
我这个代码是最早时候写的,算法复杂度O(n2)。思路比较简单。
代码:
内存限制:32 兆
特殊判题:否
提交:3124
解决:1525
题目描述:
某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。
输入:
每组输入有两行,
第一行,输入雷达捕捉到的敌国导弹的数量k(k<=25),
第二行,输入k个正整数,表示k枚导弹的高度,按来袭导弹的袭击时间顺序给出,以空格分隔。
输出:
每组输出只有一行,包含一个整数,表示最多能拦截多少枚导弹。
样例输入:
8 300 207 155 300 299 170 158 65
样例输出:
6
来源:2007年北京大学计算机研究生机试真题
思路:
该题的本质是求最长下降子序列。可以用动态规划来做,最好的算法复杂度应该是O(nlogn)的。
我这个代码是最早时候写的,算法复杂度O(n2)。思路比较简单。
代码:
#include <stdio.h> #define N 25 int main(void) { int n, i, j; int a , k ; while (scanf("%d", &n) != EOF) { for(i=0; i<n; i++) scanf("%d", &a[i]); k[0] = 1; for (i=1; i<n; i++) { k[i] = 1; for (j=i-1; j>=0; j--) { if (a[j] >= a[i] && k[j]+1 > k[i]) k[i] = k[j] + 1; } } int max = 0; for (i=0; i<n; i++) max = k[i]>max ? k[i] : max; printf("%d\n", max); } return 0; } /************************************************************** Problem: 1112 User: liangrx06 Language: C Result: Accepted Time:0 ms Memory:912 kb ****************************************************************/
相关文章推荐
- LoadRunner自带实例安装问题could not open ftp port21-port is already used by another server
- 移动互联网手机分享消费将会影响我们的消费习惯,你准备好了吗?
- Py4JJavaError: An error occurred while calling o18.sql. : java.lang.RuntimeException:
- 2.有人认为,“中文编程”是解决中国程序员编程效率的秘密武器,请问它是一个“银弹”么?
- org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document fro
- 【codevs1282】约瑟夫问题,卡数据ing?
- swift:创建表格UITableView
- CSS控制表格——制作日历
- 堆中的路径
- Animation Clips(动画剪辑)
- HDOJ 1881 毕业bg (01背包)
- java实现正则表达式到NFA的转换
- hdoj 4944 FSF’s game 【数学思维】
- 浅谈Activity中setContentView()
- 论在LCT上下放标记
- Python模块包中__init__.py文件 精髓
- LoadRunner设置登录检查点
- 九度OJ 1111:单词替换 (查找)
- poj 3278 找牛
- 迅,免费学习编程9地点