zoukankan      html  css  js  c++  java
  • 防卫导弹

    防卫导弹

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

    描述
    一种新型的防卫导弹可截击多个攻击导弹。它可以向前飞行,也可以用很快的速度向下飞行,可以毫无损伤地截击进攻导弹,但不可以向后或向上飞行。但有一个缺点,尽管它发射时可以达到任意高度,但它只能截击比它上次截击导弹时所处高度低或者高度相同的导弹。现对这种新型防卫导弹进行测试,在每一次测试中,发射一系列的测试导弹(这些导弹发射的间隔时间固定,飞行速度相同),该防卫导弹所能获得的信息包括各进攻导弹的高度,以及它们发射次序。现要求编一程序,求在每次测试中,该防卫导弹最多能截击的进攻导弹数量,一个导弹能被截击应满足下列两个条件之一:
    a)它是该次测试中第一个被防卫导弹截击的导弹;
    b)它是在上一次被截击导弹的发射后发射,且高度不大于上一次被截击导弹的高度的导弹。
     
    输入
    多个测例。
    每个测例第一行是一个整数n(n不超过100),第二行n个整数表示导弹的高度(数字的顺序即发射的顺序)。
    n=0表示输入结束。
     
    输出
    每个测例在单独的一行内输出截击导弹的最大数目。
     
    输入样例
    5
    5 6 100 6 61
    0
     
    输出样例
    2
    #include <iostream>
    
    using namespace std;
    
    void FindPlan(int* data,int num)
    {
        int* count = new int[num];
        for(int i = 0;i < num; i++)
            count[i] = 0;
        int maxi;
    	/*if(num>=2&&data[num-1]<=data[num-2])
    		count[num-1] = 1;*/
    	count[num-1] = 1;									//若击落最后一个导弹则只能击中一个
        for(i = num-2;i >= 0; i--)							//从倒数第二枚导弹开始计数,若从第i枚导弹并开始打击(包含第i枚)能打击多少枚导弹
        {
            maxi = 0;
            for(int j = i+1;j < num; j++)
            if(data[j]<=data[i]&&count[j]>maxi)
                maxi = count[j];
            count[i] = maxi+1;
    	
    		/*cout<<i<<endl;
    		for(int k = 0;k < num; k++)
    			cout<<count[k]<<" ";
    		cout<<endl;*/
    
        }
        int max = 0;
    
    	/*for(i = 0;i < num; i++)
    		cout<<count[i]<<" ";
    	cout<<endl;*/
    
        for(i = 0;i < num; i++)
            if(count[i]>max)
                max = count[i];
        cout<<max<<endl;
    	free(count);
    }
    
    int main()
    {
        int num;
        int *data;
        cin>>num;
    	while(num!=0)
    	{
    		data = new int[num];
    		for(int i = 0;i < num; i++)
    			cin>>data[i];
    		FindPlan(data,num);
    		free(data);
    		cin>>num;
    	}
        
        return 0;
    }
    

      

    态度决定高度,细节决定成败,
  • 相关阅读:
    Zabbix监控mysql配置及故障告警配置
    Tesseract-OCR 字符识别---样本训练
    Wex5案例使用JSON传输Thinkphp后端对接,以达成数据正常输出
    Linux内核分析:recv、recvfrom、recvmsg函数实现
    libevent源码分析:evmap_io_active_函数
    libevent源码分析:epoll后端实现
    监听套接字不可写?
    Linux内核分析:dup、dup2的实现
    Linux内核分析:打开文件描述符实现
    libevent源码分析:http-server例子
  • 原文地址:https://www.cnblogs.com/lxk2010012997/p/4417968.html
Copyright © 2011-2022 走看看