zoukankan      html  css  js  c++  java
  • nyoj 79 拦截导弹

    拦截导弹

    时间限制:3000 ms  |  内存限制:65535 KB

    难度:3

    描述

    某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于等于前一发的高度。某天,雷达捕捉到敌国导弹来袭。由于该系统还在试用阶段,所以只用一套系统,因此有可能不能拦截所有的导弹。

    输入

    第一行输入测试数据组数N(1<=N<=10)
    接下来一行输入这组测试数据共有多少个导弹m(1<=m<=20)
    接下来行输入导弹依次飞来的高度,所有高度值均是大于0的正整数。

    输出

    输出最多能拦截的导弹数目

    样例输入

    2

    8

    389 207 155 300 299 170 158 65

    3

    88 34 65

    样例输出

    6

    2

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int s[25];
    int dp[25];
    int main()
    {
    	int T;
    	scanf("%d",&T);
    	while(T--)
    	{
    		int n;
    		memset(s,0,sizeof(s));
    		memset(dp,0,sizeof(dp));
    		scanf("%d",&n);
    		for(int i=n;i>=1;i--)
    			scanf("%d",&s[i]);
    		int i,j,ans=0;
    		dp[0]=1;
    		for(i=1;i<=n;i++)
    		{
    			int Max=0;
    			for(j=1;j<=i;j++)
    			{
    				if(s[i]>s[j]&&Max<dp[j])
    					Max=dp[j];
    			}
    			dp[i]=Max+1;
    			if(ans<dp[i])
    				ans=dp[i]; 
    		}
    		printf("%d
    ",ans);
    	}
    	return 0;
    }         
    

      

  • 相关阅读:
    ***25 k个一组反转链表
    24 交换链表中相连的节点
    19 删除链表倒数第N个节点
    2 两数相加
    23 合并K个有序链表
    21 合并两个有序链表
    114 判断一个链表是否存在环并返回环起点
    141 链表是否存在环
    160 寻找链表交点
    92 指定区间链表逆置
  • 原文地址:https://www.cnblogs.com/zhangliu/p/7053378.html
Copyright © 2011-2022 走看看