【算法】程序猿不写代码是不对的66

xiaoxiao2021-02-28  115

package com.kingdz.algorithm.time201706; /** * <pre> * 拦截导弹 * 敌人发射了一批导弹,每个导弹有一定的高度 * 发射拦截导弹进行拦截,每个拦截导弹的高度不会高于前一次发生的高度 * 现在给定敌人导弹的高度列表,求一个系统可以最多拦截多少个导弹 * 如果需要全部拦截则需要多少个系统 * </pre> * * @author kingdz * */ public class Algo06 { public static void main(String[] args) { int[] height = { 0, 120, 358, 350, 340, 287, 294, 265, 312, 198, 220 }; int[] flag = new int[height.length]; height[0] = Integer.MAX_VALUE; for (int i = 1; i < height.length; i++) { for (int j = i - 1; j >= 0; j--) { if (height[j] >= height[i] && (flag[j] + 1 > flag[i])) { flag[i] = flag[j] + 1; } } } int max = 0; for (int i = 1; i < height.length; i++) { if (flag[i] > max) { max = flag[i]; } } System.out.println(max); for (int i = 0; i < height.length; i++) { flag[i] = 0; } height[0] = 0; for (int i = 1; i < height.length; i++) { for (int j = i - 1; j >= 0; j--) { if (height[j] < height[i] && (flag[j] + 1 > flag[i])) { flag[i] = flag[j] + 1; } } } int min = 0; for (int i = 1; i < height.length; i++) { if (flag[i] > min) { min = flag[i]; } } System.out.println(min); } }
转载请注明原文地址: https://www.6miu.com/read-18408.html

最新回复(0)