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

来源:互联网 发布:淘宝c店可以卖吃的吗? 编辑:程序博客网 时间:2024/06/10 14:08
package com.kingdz.algorithm.time201705;/** * <pre> * 调整队形 * 有N个人排成一排,每个人的身高为Tn,为了保证中间最高两边依次变矮,一共需要有K个人出列 * 使得队列剩余N-K个人,求出列的K人最小是多少 * </pre> *  * @author kingdz *  */public class Algo23 {public static void main(String[] args) {int[] a = { 0, 186, 186, 150, 200, 160, 130, 197, 220, 0 };int n = 8;int[] flag1 = new int[n + 2];int[] flag2 = new int[n + 2];a[0] = 0;for (int i = 1; i <= n; i++) {for (int j = i - 1; j >= 0; j--) {if (a[j] < a[i] && flag1[j] + 1 > flag1[i]) {flag1[i] = flag1[j] + 1;}}}a[n + 1] = 0;for (int i = n; i >= 1; i--) {for (int j = i + 1; j <= n + 1; j++) {if (a[j] < a[i] && flag2[j] + 1 > flag2[i]) {flag2[i] = flag2[j] + 1;}}}int max = 0;for (int i = 1; i <= n; i++) {if (flag1[i] + flag2[i] > max) {max = flag1[i] + flag2[i];System.out.println(flag1[i] + "\t" + flag2[i]);}}System.out.println(n - max + 1);}}