NYOJ 题目79 拦截导弹
来源:互联网 发布:java抽象类的特点 编辑:程序博客网 时间:2024/05/28 15:54
拦截导弹
时间限制: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到N 的数组初始化为1。
最长单调子序列就是在遍历每一个数组的地址的时候,每到达一个位置就再加一个循环从头开始。以数组a记录题中给出的数据,以数组dp记录每一个数据的状态(在本题中就是
记录当前数组a中的当前数据前有几个数据已经满足了要求。)然后最后找出满足要求的最大序列的数。
#include <stdio.h>#include <memory.h>int a[50],dp[50];int main (void){ //freopen("题目79.txt","r",stdin); int n,m,i,j,k,max; while(scanf("%d",&n)!=EOF) { for(i=1;i<=n;i++) { scanf("%d",&m); memset(a,0,sizeof(a)); memset(dp,0,sizeof(dp)); for(j=1;j<=m;j++) { scanf("%d",&a[j]); } dp[1]=1; for(j=2;j<=m;j++) { dp[j]=1; for(k=1;k<j;k++) { if(a[k]>a[j]&&dp[k]+1>dp[j]) dp[j]=dp[k]+1; } } max=dp[2]; for(j=2;j<=m;j++) { max=(max>dp[j])?max:dp[j]; } printf("%d\n",max); } } return 0;}
0 0
- NYOJ 题目79 拦截导弹
- NYOJ 题目79 拦截导弹(dp)
- NYOJ-79:拦截导弹
- NYOJ 79 导弹拦截
- nyoj 79 导弹拦截
- nyoj-79-拦截导弹
- NYOJ 79 拦截导弹
- NYOJ 79 拦截导弹
- NYOJ 79 拦截导弹
- nyoj 79 拦截导弹
- nyoj 79 拦截导弹
- NYOJ 79 拦截导弹
- nyoj-79 拦截导弹
- nyoj 79 拦截导弹
- NYOJ 79 拦截导弹
- nyoj 79拦截导弹
- NYOJ 79 拦截导弹
- NYOJ 79 拦截导弹
- 九度 题目1185:特殊排序
- AFNetworking 2.0 编译不过的问题修复
- android TabHost 导航标签
- Scripts:查询所有参数修改信息的脚本parm_mods.sql
- 书本Applet程序练习------同一页Applet之间的通信
- NYOJ 题目79 拦截导弹
- 新辰:90后大学生创业开口笑馒头店火爆全市 卖馒头日赚2000!
- Scripts:查询数据文件IO使用率的脚本 perf_file_io.sql
- Scripts:查询每个数据文件等待时间的脚本perf_file_waits.sql
- 游起来吧!超妹!(物理小试题)
- Scripts:查询每个session命中率的脚本perf_hit_ratio_by_session.sql
- Object C Lesson1
- Android Activity布局之RelativeLayout
- Scripts:查询每个数据文件使用效率的脚本perf_file_io_efficiency.sql