• 导弹拦截


    导弹拦截(一)
    难度级别:A;            运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
    试题描述
    某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000 的正整数),计算这套系统最多能拦截多少导弹?该导弹数量不超过100个。
    输入
    一行有若干个整数,表示依次飞来导弹的高度。两数之间用一个空格分隔。
    输出
    一个数,表示该系统最多能拦截的导弹。
    输入示例
    389 207 155 300 299 170 158 65
    输出示例
    6
    其他说明
    数据范围见题目中的描述。
    #include<iostream> 
    using namespace std; 
    int h[101],a[101]; 
    int main() 
    {    
        int i,j,n=0,ans=0,maxx;
        while(cin>>h[n]) 
        {
            n++;
        }
        a[1]=1;
        for(i=0;i<n;i++) 
        { 
            maxx=1; 
            for(j=0;j<=i;j++)
            { 
                if(h[i]<h[j]&&a[j]+1>maxx)
                    maxx=a[j]+1; 
                a[i]=maxx; 
            } 
            if(a[i]>=ans) 
                ans=a[i]; 
        } 
        cout<<ans;
        //system("pause");
        return 0;
    }

      拟一个表格389 207 155 300 299 170 158 65
                    1     2     3    2     3     4     5    6

    导弹拦截(二)
    难度级别:B;            运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
    试题描述
     某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000 的正整数),该导弹数量不超过100个,计算这套系统最多能拦截多少导弹,分别是哪些导弹,本题保证所给的数据最优解只有一组。
    输入
    一行有若干个整数,表示依次飞来导弹的高度。两数之间用一个空格分隔。
    输出
    第一行包含一个数表示最多能拦截的导弹数,第二行有若干个数,表示依次拦截到的导弹高度,两两之间用一个空格分隔。
    输入示例
    389 207 155 300 299 170 158 65
    输出示例
    6 389 300 299 170 158 65
    其他说明
    数据范围见题目描述。
    #include<iostream> 
    using namespace std; 
    int h[101],a[101],b[101],k[101]; 
    int main() 
    {    
        int i,j,n=2,ans=0,maxx,hh=0;
        int num=0;
        while(cin>>h[n]) 
        {
            n++;
        }
        n--;
        a[1]=1;
        for(i=2;i<=n;i++) 
        { 
            maxx=1; 
            for(j=1;j<i;j++)
            { 
                if(h[i]<h[j]&&a[j]+1>maxx)
                {
                    maxx=a[j]+1;
                    b[i]=j;
                }
                a[i]=maxx; 
            } 
            if(a[i]>=ans)
            { 
                ans=a[i]; 
                num=i;
            }
        }
        cout<<ans<<endl;
        for(i=num;i>=1;)
        {
            k[hh]=h[i];
            hh++;
            i=b[i];
        }
        for(i=hh-1;i>0;i--)
        {
            cout<<k[i]<<" ";
        }
        cout<<h[num];
        //system("pause");
        return 0;
    }
    导弹拦截(三)
    难度级别:C;            运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
    试题描述
    某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000 的正整数),该导弹数量不超过100个计算这套系统最多能拦截多少导弹,和如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
    输入
    一行有若干个整数,表示依次飞来导弹的高度。两数之间用一个空格分隔。
    输出
    第一行一个数表示最多能拦截的导弹数 第二行一个数表示要拦截所有导弹最少要配备的系统数
    输入示例
    389 207 155 300 299 170 158 65
    输出示例
    6 2
    其他说明
    数据范围见题目中的描述。
    #include<iostream> 
    using namespace std; 
    int h[101],a[101]; 
    int main() 
    {    
        int i,j,n=0,ans=0,maxx;
        while(cin>>h[n]) 
        {
            n++;
        }
        a[1]=1;
        for(i=0;i<n;i++) 
        { 
            maxx=1; 
            for(j=0;j<=i;j++)
            { 
                if(h[i]<h[j]&&a[j]+1>maxx)
                    maxx=a[j]+1; 
                a[i]=maxx; 
            } 
            if(a[i]>=ans) 
                ans=a[i]; 
        } 
        cout<<ans;
        int ans1=1;
        for(i=1;i<=n;i++)
        {
            if(h[i]<h[i-1])
            {
                continue;
            }
            else
                ans1++;
        }
        cout<<endl<<ans1;
        //system("pause");
        return 0;
    }
    蒟蒻总是更懂你✿✿ヽ(°▽°)ノ✿
  • 相关阅读:
    Java并发之CAS与AQS简介
    关系型数据库三范式
    分库分表使用场景及设计方式
    项目部署到tomcat出错(tomcat运行时的JDK版本)
    手写一个简化版Tomcat
    java并发之并发工具
    java并发之停止线程
    class中static总结-静态成员函数和静态成员变量
    45 孩子们的游戏(圆圈中最后剩下的数) + list操作总结+ for_each多记忆容易忘记
    C++ split分割字符串函数
  • 原文地址:https://www.cnblogs.com/WWHHTT/p/6572172.html
Copyright © 2020-2023  润新知