描述
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。怎么办呢?请帮助计算一下最少需要多少套拦截系统?
输入
输入若干组数据(不超过100组),每组数据一行,分别为:导弹总个数(正整数,不超过1000),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
输出
对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统。
样例输入
8 389 207 155 300 299 170 158 65
样例输出
2
#include <stdio.h>
#include <stdlib.h>
int missle[1000];
int sys[1000];
int find(int, int);
int compare(const void * a, const void * b)
{
return (*(int *)a - *(int *)b);
}
int main()
{
int n;
while(scanf("%d", &n) == 1)
{
int j = 0;
int i;
int a = 1;
for(i = 0; i < n ; i++)
{
scanf("%d", &missle[i]);
}
sys[0] = missle[0];
for(i = 1; i < n; i++)
{
int pos = find(i, a);
if(pos == -1)
{
a++;
sys[a-1] = missle[i];
}
}
printf("%d\n", a);
}
return 0;
}
int find(int spos, int a)
{
int pos = -1;
int i;
for(i = 0; i < a; i++)
{
if( missle[spos] <= sys[i])
{
pos = i;
sys[i] = missle[spos];
break;
}
}
qsort(sys, a, sizeof(int), compare);
return pos;
}
分享到:
相关推荐
采用贪心策略,首先把第一枚导弹的高度存入数组中,意味着要使用第一套拦截系统,然后如果第二枚导弹的高度大于第一枚的话(不能拦截),把第二枚的高度加入数组中(第一枚之后),需要增加另一套拦截系统,如果小于...
例如,在missile问题中,我们可以定义opt[i]表示到第i个导弹为止所需的最少拦截系统数。状态转移方程可以是opt[i] = max(opt[j]) + 1, 其中j ,并且a[j] >= a[i],意味着对于第i个导弹,我们查看所有小于i并且高度...
问题背景:某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够达到任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹...
题目 1:如下图所示的数字三角形。...输入导弹依次飞来的高度(雷达给出的高度数据是不大于 30000 的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
在现代军事领域,拦截高速机动目标是一项至关重要的技术,它涉及到导弹防御系统、空对空战斗等场景。本文将深入探讨“拦截高速机动目标的最优制导律”这一主题,并结合MATLAB代码进行分析。 最优制导律是指导弹如何...
在这个"商品小系统"中,它们的结合使用可以实现快速的数据异步更新,提供流畅的用户体验。 首先,让我们详细了解一下Struts2框架。Struts2是基于拦截器的MVC框架,它通过Action类处理用户的请求,并将结果返回到视...
FancyCache为硬盘分配内存作缓存,并拦截系统发送至硬盘的IO请求。如果IO请求读取的数据已经在缓存中,则直接读取缓存中的数据并完成IO请求。否则数据则从硬盘中读取出来,并存入缓存,同时完成IO请求。由此可见,从...
目标分配是多导弹拦截系统中的一个核心问题,它关注如何在多个目标和多个导弹之间合理分配拦截任务,以保证所有目标能被有效拦截,同时尽可能降低能量消耗。 文章指出,传统的目标分配方法需要考虑目标的初始速度...
2. **拦截问题**:另一个示例是拦截器对目标的拦截控制,目标是找到最优的推力控制,使得拦截时间最短且燃料消耗最少。这个问题同样包含了一系列动力学方程、初始和终端条件,以及性能指标的设定。 **五、求解方法*...
Android应用中的Activity、Service、Content Provider、Broadcast Receiver等组件通过Internet协议进行通信,这可能导致恶意调用、广播拦截、服务非法启动等问题。例如,攻击者可以通过未授权的组件访问来操控应用,...
6. **被动攻击与主动攻击**:被动攻击包括会话拦截,不改变数据,而拒绝服务攻击、系统干涉和修改数据命令属于主动攻击。 7. **入侵检测技术**:漏洞扫描不属于入侵检测技术,它是安全防护的一种手段,用于发现系统...
在拦截导弹问题中,我们需要用最少的系统击落所有导弹。我们可以使用贪心算法来解决问题,选择已有的系统,如果已有的系统中有一个能拦截该导弹,我们应该继续使用它。如果已有系统中有多个可以拦截该导弹,究竟选哪...
另一个例子是拦截问题,这里需要在满足时间最短和燃料消耗最少之间找到平衡,通过优化控制策略来实现。 求解最优控制问题的方法包括解析法和数值计算法。解析法试图找到问题的解析解,而数值计算法则依赖于计算机...
安全模式会加载最少的驱动和服务,如果在这种模式下能正常关机,那就说明有某个非必要驱动在阻止关机。 5. **第三方软件排查**:某些第三方软件可能安装了自己的驱动,这些驱动在关机时可能产生问题。检查最近安装...
1. **拦截导弹问题**:这个问题要求找到最多能拦截的导弹数,条件是导弹拦截系统发射的每一发炮弹高度不能高于前一发。我们可以利用动态规划来解决这个问题。首先,我们需要按照导弹高度排序,然后从第一个导弹开始...
同时,Dubbo提供了多种负载均衡策略,如随机、轮询、最少活跃调用数等,以确保请求均匀分布到各个服务实例,避免单点压力过大。 再者,Dubbo提供了丰富的容错策略,包括失败快速失败、有限重试、降级、隔离等,以...
LVS提供了多种负载均衡算法,如轮询(Round-Robin)、最少连接(Least Connections)、基于IP哈希(IP Hash)等,以适应不同应用场景的需求。这些算法确保了服务器间的负载均衡,防止某台服务器过载,同时最大化资源...
通过动态规划,可以计算出系统最多能拦截多少导弹,以及拦截所有导弹所需的最少系统数量。此问题的关键在于找到合适的状态定义(如最大拦截数)和状态转移方程,以确定每个位置上的最佳决策。 总的来说,动态规划在...