1158: 防御导弹
来源:互联网 发布:手柄助手映射软件 编辑:程序博客网 时间:2024/05/29 09:27
题目
Description
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截 系统有一个缺陷:虽然它的第一发炮弹能够达到任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试 用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
Input
最多20个整数,分别表示导弹依次飞来的高度(雷达给出高度数据是不大于30000的正整数)
Output
整数M。表示:这套系统最多能拦截 M 枚导弹.
Sample Input
300 250 275 252 200 138 245
Sample Output
5
代码块
import java.util.Arrays;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner cn = new Scanner(System.in); int[] a = new int[21];//先定义一个数组 String str = cn.nextLine();//因为,不知道导弹的个数,所以先用字符串输入,再存入,先前定义的数组中 String[] s = str.split(" "); for (int i = 0; i < s.length; i++)//将输入的数,存入数组中 a[i] = Integer.parseInt(s[i]); int n = s.length;//先定义,数的个数 int max = 0,k = 1,x = 0,t = 0;//初始化,例子 while (t != k) {//对每次循环的t和k的值进行判断,如果,循环到最后,两者,相等,则所有的循环就结束了,退出循环 int i = 0,counts =0;每次,循环,都是以第一个数开始做头,然后,进行判断 t = k;//每次对,t进行更新 for (int j = k; j < n; j++) {//k的意思,是每次循环第一次前者小于后者的位置,然后,从这个位置进行判断 if (a[i] >= a[j]) {//进行前后者数大小的判断,更新 i 的位置 counts++; i = j; } else {//如果,小于后者,进行此位置的更新,如果后面还有前者小于后者的位置,不在更新 x++; if (x < 2) k = j; }//如果,执行到最后,也没有找到更新,k的位置,即说明,循环已经结束,此时,t也就等于k } if(max<counts) max =counts;//对每次循环的 最大值进行更新 } System.out.println(max+1);// 加上第一个导弹,输出 }}
阅读全文
0 0
- 1158: 防御导弹
- 【New AKOJ】1158: 防御导弹
- 防御导弹
- TOJ1004 防御导弹问题
- BIT1012 导弹防御问题
- shu_1243 防御导弹
- 动态规划--防御导弹
- 防御导弹算法
- NEUQ 1287: 防御导弹
- zznu 1304: 防御导弹
- 1048: 导弹防御系统
- 问题 : 导弹防御系统
- #10048导弹防御系统
- 【NOIP2013模拟】导弹防御塔
- 【NOIP2013模拟】导弹防御塔
- 2013寒假练习 1012:导弹防御问题
- STK:STK导弹防御系统功能说明
- 寒假练习 1012 导弹防御问题
- 二进制文件查看其,看到的内容,解析,说明
- C/C++直接输出一个数据的十六进制、八进制和二进制
- HTML(5) 样式指南和代码约定
- 解决WordPress无法在线安装主题与插件
- 《Android源码设计模式解析与实战》读书笔记(十七)——中介者模式
- 1158: 防御导弹
- linux内核调优参数对比和解释
- ubuntu下gcc链接静态库.a文件
- ConcurrentHashMap原理详解
- 数制转换
- spring 实现bean对象创建
- 在javaee的普通类中获取request对象
- 医院呼叫中心应具备的功能
- 关于 iOS 10 中 ATS 的问题