时间限制:1 秒

内存限制: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[N], k[N]; 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
****************************************************************/
												

九度OJ 1112:拦截导弹 (DP、最长下降子序列)的更多相关文章

  1. 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)

    题目地址:http://ac.jobdu.com/problem.php?pid=1500 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往 ...

  2. 九度OJ 1042 Coincidence -- 动态规划(最长公共子序列)

    题目地址:http://ac.jobdu.com/problem.php?pid=1042 题目描述: Find a longest common subsequence of two strings ...

  3. 【九度OJ】题目1195:最长&最短文本 解题报告

    [九度OJ]题目1195:最长&最短文本 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1195 题目描述: 输入多行字符串, ...

  4. 清橙 A1120 拦截导弹 -- 动态规划(最长上升子序列)

    题目地址:http://oj.tsinsen.com/A1120 问题描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但 ...

  5. POJ-1887 Testing the CATCHER(dp,最长下降子序列)

    Testing the CATCHER Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 16515 Accepted: 6082 ...

  6. hdu1160简单dp最长下降子序列

    /* 简单dp,要记录顺序 解:先排序,然后是一个最长下降子序列 ,中间需记录顺序 dp[i]=Max(dp[i],dp[j]+1); */ #include<stdio.h> #incl ...

  7. 2020牛客寒假算法基础集训营6 C 汉诺塔 (dp 最长下降子序列)

    https://ac.nowcoder.com/acm/contest/3007/C 将木板按照Xi从小到大排序,将这时的Yi数列记为Zi数列,则问题变成将Zi划分为尽可能少的若干组上升子序列. 根据 ...

  8. 九度OJ 1552座位问题(dp)

    刚开始写的一维数组,但是由于后面的数字较大,要对它取模,所以用一维数组进行减法运算,结果就不对了.所以还是得用二维数组,用dp[n][0]来表示第n位为男生总的方法个数,dp[n][1]表示第n位为女 ...

  9. 九度oj题目1342:寻找最长合法括号序列II

    题目1342:寻找最长合法括号序列II(25分) 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:886 解决:361 题目描述: 假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然 ...

随机推荐

  1. gzip: stdin: unexpected end of file tar: 归档文件中异常的 EOF

    gzip: stdin: unexpected end of file tar: 归档文件中异常的 EOF 问题描述: 使用tar命令解压文件时,报错: gzip: stdin: unexpected ...

  2. Laravel 5.1 框架返回状态拦截

    Laravel 5.1 返回信息状态拦截 可以在app\Exceptions\Handler.php文件中修改, public function render($request, Exception ...

  3. HRBUST 2064:萌萌哒十五酱的宠物~(最近公共祖先LCA)

    题意:一个n个点的树,询问某两点之间的简单路径,问路径上任选三边能否组成一个三角形. N<100000,权值<109 思路: 这里最神奇的思路过于以下这个: n个数,任意三个都不能组成三角 ...

  4. js-关于微信页面分享(取消或打开)

    在微信二次开发中,我们会遇到页面可以分享或不能分享的情况(私人隐私页面不能.禁止分享) 1.禁止页面分享(取消微信开打页面的分享功能) <script> function onBridge ...

  5. ajax跨域-springboot

    package com.xxxx.xx.service.configuration; import org.springframework.context.annotation.Bean; impor ...

  6. BZOJ 1355 [Baltic2009] Bazinga

    题面 [题目描述] 对于给定的n个字符串S1,S2--,Sn,标号为1到n,请你找出一个最大的i使得标号小于i的字符串中存在一个不是i的子串. [输入描述]: 第一行包括一个整数t(1<=t&l ...

  7. FireDAC 出现Variable length column[*] overflow. Value length - [80], column maximum length

    FireDAC 出现Variable length column[*] overflow. Value length - [80], column maximum length FireDAC的 TF ...

  8. Android Framework 记录之一

    简介 之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework框架层了. 记录 1.下载源码,目录如下: 2.Android系统的层次如下: 3.项目目录简单分析如下: 4 ...

  9. UITableViewCell -- 动画

    -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath: ...

  10. oralce中相关的概念整理

    [数据库名]  概念:就是一个数据库的标识,作用等同于我们的身份证的作用,假设一台机器上安装了多个数据库,那么每一个数据库都会有一个数据库名称相应,这些数据库名称在数据库被创建的时候,数据库名称也会被 ...