博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5.11题解 导弹拦截
阅读量:5300 次
发布时间:2019-06-14

本文共 981 字,大约阅读时间需要 3 分钟。

Description

某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.
怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
 

Input

输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
 

Output

对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.
 

Sample Input

8 389 207 155 300 299 170 158 65
 

Sample Output

2
 
题意:
    求所需最少的导弹拦截系统数
思路:
    导弹拦截系统所发射的高度是在一直降低的,对于每一颗导弹,如果先前的系统不能拦截,则需要加一个系统。
   建立一个数组,记录现有导弹系统所能发射的最大高度,如果高度不足以拦截,则再增系统。
 
代码如下:

#include <iostream>

#include <algorithm>

using namespace std;

int map[10000];

int high[10000];

int main()

{
 int n, i, j, sum;
 while (cin >> n)
 {
  sum = 0;      //开始的时候没有拦截系统
  for (i = 0; i < n; i++)         //记录导弹的高度
  {
   cin >> map[i];
  }
  
  for (i = 0; i < n; i++)
  {
   for (j = 0; j < sum; j++)
   {
    if (high[j] >= map[i])
    {
     high[j] = map[i];
     break;
    }
   }
   if (j == sum)
   {
    high[sum] = map[i];
    sum++;
   }
  }
  cout << sum << endl;
 }
}

转载于:https://www.cnblogs.com/lihek/archive/2013/05/11/3073192.html

你可能感兴趣的文章
java b组 小计算器,简单计算器..
查看>>
java的二叉树树一层层输出,Java构造二叉树、树形结构先序遍历、中序遍历、后序遍历...
查看>>
php libevent 定时器,PHP 使用pcntl和libevent实现Timer功能
查看>>
php仿阿里巴巴,php实现的仿阿里巴巴实现同类产品翻页
查看>>
Node 中异常收集与监控
查看>>
七丶Python字典
查看>>
Excel-基本操作
查看>>
面对问题,如何去分析?(分析套路)
查看>>
Excel-逻辑函数
查看>>
面对问题,如何去分析?(日报问题)
查看>>
数据分析-业务知识
查看>>
nodejs vs python
查看>>
poj-1410 Intersection
查看>>
Java多线程基础(一)
查看>>
TCP粘包拆包问题
查看>>
Java中Runnable和Thread的区别
查看>>
SQL Server中利用正则表达式替换字符串
查看>>
POJ 1015 Jury Compromise(双塔dp)
查看>>
UIScrollView,UICollectionView 和UITableView的属性和方法
查看>>
论三星输入法的好坏
查看>>