本文主要是介绍题目 2123: T1260-拦截导弹,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
代码:
package lanqiao;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);ArrayList<Integer> list = new ArrayList<>();while(sc.hasNext()){list.add(sc.nextInt());}int[] dp = new int[list.size()];int[] dp2 = new int[list.size()];int maxLen = 0;int tigerNum = 0;//填充数组Arrays.fill(dp,1);Arrays.fill(dp2,1);for(int i = 1;i < list.size();i ++){for(int j = 0;j < i;j ++){if(list.get(i) <= list.get(j)){dp[i] = Math.max(dp[i],dp[j] + 1);}else{dp2[i] = Math.max(dp2[i],dp2[j] + 1);}}maxLen = Math.max(maxLen,dp[i]);tigerNum = Math.max(tigerNum,dp2[i]);}System.out.println(maxLen);System.out.println(tigerNum);}
}
这篇关于题目 2123: T1260-拦截导弹的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!