1046.防卫导弹

时限:1000ms 内存限制:10000K  总时限:3000ms

描述

一种新型的防卫导弹可截击多个攻击导弹。它可以向前飞行,也可以用很快的速度向下飞行,可以毫无损伤地截击进攻导弹,但不可以向后或向上飞行。但有一个缺点,尽管它发射时可以达到任意高度,但它只能截击比它上次截击导弹时所处高度低或者高度相同的导弹。现对这种新型防卫导弹进行测试,在每一次测试中,发射一系列的测试导弹(这些导弹发射的间隔时间固定,飞行速度相同),该防卫导弹所能获得的信息包括各进攻导弹的高度,以及它们发射次序。现要求编一程序,求在每次测试中,该防卫导弹最多能截击的进攻导弹数量,一个导弹能被截击应满足下列两个条件之一:
a)它是该次测试中第一个被防卫导弹截击的导弹;
b)它是在上一次被截击导弹的发射后发射,且高度不大于上一次被截击导弹的高度的导弹。

输入

多个测例。
每个测例第一行是一个整数n(n不超过100),第二行n个整数表示导弹的高度(数字的顺序即发射的顺序)。
n=0表示输入结束。

输出

每个测例在单独的一行内输出截击导弹的最大数目。

输入样例

5
5 6 100 6 61
0

输出样例

2

解析:这个老师上课讲了思路,我就按照老师的思路来写吧。输入了n个导弹,高度存在high[n]数组中,设num数组是存打下来导弹的个数。根据题意,我们可以从后面开始找,首先如果只打第n个导弹的话肯定可以打下来,则num[n]=1,现在算倒数第二个high[n-1],如果倒数第二个导弹高度大于等于倒数第一个即high[n-1]>=high[n],那么num[n-1]=num[n]+1,反之则num[n-1]=num[n]。以此类推,如果找第i个导弹时,将它于第i+1~n个比较,若high[i]>high[i+1],则num[i]=num[i+1]+1,不断更新其为最大值。代码如下:

#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int main()
{
    int n;
    while(scanf("%d",&n)&&n)
    {
        int high[101];
        memset(high,0,sizeof(high));
        for(int i=1;i<=n;i++)
            cin>>high[i];
        int num[101];
        memset(num,0,sizeof(num));
        num[n]=1;
        for(int i=n-1;i>=0;i--)
        {
            for(int j=i+1;j<=n+1;j++)
            {
                if(high[i]>=high[j])
                {
                    if(num[i]<=num[j]+1)
                        num[i]=num[j]+1;

}
            }
        }
        int max1=0;
        for(int i=1;i<=n;i++)
        {
            if(max1<num[i])
                max1=num[i];
        }
        cout<<max1<<endl;
    }
}

【算法实验四】--【动态规划】--防卫导弹相关推荐

  1. 深大算法实验四——流水线问题

    代码链接:深大算法实验四--车间动态规划代码-C++文档类资源-CSDN下载 目录 实验目的与要求: 实验过程及内容: 蛮力法: 动态规划法: 改进 空间优化方案: 问题1,关于最优解的存储方案 问题 ...

  2. CUMTOJ算法实验四

    CUMTOJ算法实验四 问题 A: 判断日期是否符合格式 题目描述 我们知道一年有12个月,每个月最多有31天,年有平年和闰年之分,本题目要求如果输入一个日期,程序需要判断用户输入的日期是否正确. 提 ...

  3. matlab信息隐藏算法,实验四--基于DCT域的信息隐藏算法

    <实验四--基于DCT域的信息隐藏算法>由会员分享,可在线阅读,更多相关<实验四--基于DCT域的信息隐藏算法(6页珍藏版)>请在人人文库网上搜索. 1.实验四 基于DCT域的 ...

  4. 算法设计与分析 实验四 动态规划求解流水线问题

    动态规划求解流水线问题 一.实验目的与要求 1. 实验目的: 2. 实验亮点: 二.实验内容与方法 1. 实验内容: 2. 实验要求: 三.实验步骤与过程 (一)暴力穷举法 1.算法描述: 2.时间复 ...

  5. 【NOJ1149】【算法实验四】【DP_动态规划】旅游预算/加油站问题

    1149.旅游预算 时限:1000ms 内存限制:10000K  总时限:3000ms 描述 一个旅行社需要估算乘汽车从某城市到另一城市的最小费用,沿路有若干加油站,每个加油站收费不一定相同. 旅游预 ...

  6. 【NOJ1149】【算法实验四】旅游预算

    1149.旅游预算 时限:1000ms 内存限制:10000K 总时限:3000ms 描述 一个旅行社需要估算乘汽车从某城市到另一城市的最小费用,沿路有若干加油站,每个加油站收费不一定相同.旅游预算有 ...

  7. 算法实验二 动态规划

    动态规划1 实验题目:减肥的小K2 题目描述: 小K是个苦命的孩子,他的师傅为了多赚钱,以减肥为理由,让他去采药,并说不完成不能吃饭.野地里有许多不同的草药,采每一株都需要一些时间,每一株也有它自身的 ...

  8. 【NOJ1047】【算法实验四】田忌赛马(tian ji racing)

    1047.田忌赛马(tian ji racing) 时限:1000ms 内存限制:10000K 总时限:3000ms 描述 田忌与齐王赛马,双方各有n匹马参赛(n<=100),每场比赛赌注为1两 ...

  9. 【算法实验四】(DP-动态规划)【花生米3】

    1084.花生米(三) 时限:1000ms 内存限制:10000K  总时限:3000ms 描述 五一长假第三天,Tom和Jerry在仓库散步的时候又发现了一堆花生米(仓库,又见仓库--).这次Tom ...

最新文章

  1. java流程控制图_Java流程控制
  2. vi的插入模式下退格和方向键不能使用的解决方法
  3. java和其他语言相比 特点,【单选题】与其他面向对象语言相比,Java语言突出的特点是:...
  4. boost::container实现前向迭代的测试程序
  5. mysql bigint转string_无语了,直到今天,我才揪出MySQL磁盘消耗迅猛的“真凶”!...
  6. 基础学习——C语言递归解决分鱼问题
  7. SQL Server Alwayson创建代理作业注意事项
  8. yum安转软件包提示nokey错误时的处理办法。
  9. 支持向量机(SVM)非线性数据切割
  10. 微信小游戏飞机大战Cocos Creator+TypeScript
  11. 【AI视野·今日CV 计算机视觉论文速览 第189期】Fri, 1 Jan 2021
  12. LeetCode -- 1818. 绝对差值和
  13. 几种欧姆龙PLC型号的辨识
  14. 计算机处理器i3 i5,realme Book笔记本高清渲染图曝光 配置上搭载11代酷睿i3/i5处理器...
  15. 关于ZIGBEE的CC2530+RFX2401C协议栈的修改
  16. 我被炒了! 一位36岁程序员的的焦虑与困惑...
  17. qq联系我们代码-qq在线客服代码
  18. c语言喜羊羊,青青草原101C位之争,喜羊羊vs懒羊羊
  19. 原生七彩影视APP源码 支持PC+WAP+APP三端
  20. 1加到100用python实现

热门文章

  1. Android MediaTek 平台增加UART接口的红外模块支持,支持NEC红外遥控
  2. 数据库linux安装prm,在Ubuntu 18.04服务器上安装Monica PRM的步骤
  3. 数据挖掘——为什么使用哑变量?哑变量有哪些作用?哪些情况应该使用哑变量?
  4. MLXG发微博16个字正式宣布退役。
  5. Java8之List求和
  6. 李一男加盟百度的幕后故事
  7. 回忆童年-教你用python做出童年经典的动漫人物
  8. 关系型数据库语言分类(DDL,DML,DCL)
  9. 【转】从K近邻算法、距离度量谈到KD树、SIFT+BBF算法
  10. 强劲深度图像性能现场体验!奥比中光两款3D标品相机亮相China3DV