码迷,mamicode.com
首页 > 其他好文 > 详细

最少拦截系统

时间:2017-05-14 01:08:24      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:ble   空格   end   iostream   body   ace   比较   name   怎么办   

     某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.
    怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
Input
    输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
Output
    对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.
Sample Input

    8 389 207 155 300 299 170 158 65

Sample Output

    2

 

#include<iostream>
using namespace std;

int main(){
    int i,j,k,m,n;
    int a[1000];
    while(cin>>n){
        for(i=0;i<n;i++)
            cin>>a[i];
        m=a[0];
        a[0]=0;
        i=0;
        j=0;
        k=1;
        while(1){
            for(i=i+1;i<n;i++){//找出各个递减段
                if(m>a[i]&&a[i]!=0){
                    m=a[i];
                    a[i]=0;
                    k++; //计数,计算已经删去的值
                }
            }
            j++;
            if(k==n)
                break;
            i=1;
            while(a[i]==0)//从头找寻第一个不为0的数
                i++;
            m=a[i];
            a[i]=0;
            k++;
        }
        cout<<j<<endl;
    }
    return 0;
}

 

测试数据:

200 65 79 63 20 65 63 21 75 69 40
0 0 79 0 0 65 63 21 75 69 40
0 0 0 0 0 0 0 0 75 69 40
0 0 0 0 0 0 0 0 0 0 0

我的认为:

  每次从数组中找一串降序的数列,删去后,再接着找下一串降序数列,注意计数

缺点:

  在重新寻找第一个不为0的数时,比较麻烦,可以在上面设置一个数记录下位置

 

 

2017-05-13  22:46:58(人生中第一次写博客-.-)

最少拦截系统

标签:ble   空格   end   iostream   body   ace   比较   name   怎么办   

原文地址:http://www.cnblogs.com/legendary-X/p/6850734.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!