导弹拦截问题

news/2025/4/2 1:30:52/文章来源:https://www.cnblogs.com/SIPnnnnn/p/18800738

导弹拦截问题(也称为最长不上升子序列问题)是动态规划中的经典问题之一。问题的描述如下:
给定一个导弹飞行高度的序列,要求拦截所有导弹。拦截系统有一个限制:每次拦截的导弹高度不
能高于前一次拦截的导弹高度。问最少需要多少套拦截系统才能拦截所有导弹,或者一套拦截系统最多能拦截多少导弹。
这个问题可以转化为两个子问题:

1. 最少需要多少套拦截系统:即求导弹高度序列的最长上升子序列(LIS)的长度。
2. 一套拦截系统最多能拦截多少导弹:即求导弹高度序列的最长不上升子序列(LNIS)的长度。

示例数据:{189, 207, 155, 200, 99}

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int max_missiles(vector<int>&heights){
 5     int n=heights.size();
 6     vector<int>dp(n,1);//dp[i]=以height[i]结尾的最长不上升子序列
 7     for(int i=1;i<n;i++){
 8         for(int j=i;j<i;j++){
 9             if(heights[j]>=heights[i]){
10                 dp[i]=max(dp[j]+1,dp[i]);
11             }
12         }
13     }
14     return *max_element(dp.begin(),dp.end());
15 }
16 int max_w(vector<int>&heights){
17     int n=heights.size();
18     vector<int>dp(n,1);//dp[i]=以height[i]结尾的最长不上升子序列
19     for(int i=1;i<n;i++){
20         for(int j=i;j<i;j++){
21             if(heights[j]<heights[i]){
22                 dp[i]=max(dp[j]+1,dp[i]);
23             }
24         }
25     }
26     return *max_element(dp.begin(),dp.end());
27 }
28 int main(){
29     vector<int>heights={189,207,155,200,99};
30     int n=max_missiles(heights);
31     cout<<n<<endl<<max_w(heights);
32     return 0;
33 }
导弹拦截问题

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/908168.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC处理请求源码分析

一、先从Servlet案例说起 1、编写Servlet代码2、配置web.xml(可选)

get_post 攻防世界 垃圾小题

get方式直接接在url后面,post方式用hackbar里的工具直接构造。

基础1-操作系统、名词、文件下载、反弹shell、防火墙绕过

一、基础入门 1、名词解释 cnblogs.com/sunny11/p/13583083 二、操作系统-用途、命令、权限、用户、防火墙 1、渗透测试中windows、linux常用的命令 https://blog.csdn.net/weixin_43303273/article/details/83029138 2、文件、服务、用户权限 3、自带防火墙出栈、入栈规则策略…

view_source 攻防世界 垃圾小题

不在这,看源码ok出来了 cyberpeace{bded23d5700a9a861572f47867058d2c}

【Git命令】操作过程 : gif动图演示

免责声明: 本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除git merge、git rebase、git reset、git revert、git fetch、git pull、git reflog……你知道这些 git 命令执行的究竟是什么任务吗? 今天就来聊聊 Git 命令。尽管 Git 是一款非常强大的工…

第10章面向对象编程(高级部分)-cnblog

类变量与类方法 static修饰的成员变量(类变量,静态变量)的特性? 同一个类所有对象共享 类变量是随着类的加载而创建, 所以即使没有创建对象实例也可以访问 ,但是类变量的访问, 必须遵守 相关的访问权限. static可以修饰类或者函数吗? 可以,使用static修饰的方法称为类…

网站被劫持且快照被黑,如何快速修复与解决?

一、问题现象与原因分析现象描述从百度点击进入网站时,跳转到非法页面。 直接输入网址访问则正常,未发生跳转。 百度快照显示非法内容,site查看网站收录出现大量非法关键词。 百度网址安全中心提示“该页面可能存在钓鱼欺诈信息”。原因分析首页代码被篡改:黑客在首页文件中…

halcon 深度学习教程(三) 目标检测之水果分类

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/18777081深度学习教程目录如下,还在继续更新完善中 深度学习系列教程目录有兴趣可以多看其他的halcon教程halcon 学习教程目录本篇主要讲一下halcon的目标检测案例,都是halcon22版本以后才可以用的哈,没有的话…

相或为K

贪心思想:通过排除非法数,确保或运算不会引入多余的1位。 代码展示: #include <bits/stdc++.h> using namespace std; //对于k来说 如果k的第i位为0,则ai的第i为也为0(贪心思想 最优解) //利用二进制进行拆位,用>>和&的方式进行 int t,n,k;bool check(int…

WebKit Inside: 渲染树

iOS WebKit 渲染树的构建过程经过CSS的匹配,就要进入渲染树的构建。 渲染树也叫RenderObject树,因为渲染树上每一个节点,都是RenderObject的子类。 首先来看一下RenderObject的继承类图。 1 RenderObject 继承类图RenderText表示要渲染的文本。 RenderButton表示要渲染的按钮…

使用Chat2DB操作WINCC的Microsoft SQL Server数据库

配置WINCC软件自动安装的Microsoft SQL Server 数据库,使之可以被外部程序访问2025年3月30日 11:59 周日 记录 WINCC软件安装时,会同时安装对应版本的Microsoft SQL Server 数据库。 该记录主要是配置WINCC软件自动安装的Microsoft SQL Server 数据库,使之可以被外部程序访问…

GO单元测试-工具

本文介绍如何在GO语言中编写单元测试,主要内容包括:标准库中的testing包,第三方框架testify和mockery工具,monkey patching框架gomonkey,以及如何查看覆盖率。GO单元测试 摘要 本文介绍如何在GO语言中编写单元测试,主要内容包括:标准库中的testing包,第三方框架testify…