合唱队-动态规划-JAVA版

合唱队

http://www.nowcoder.com/questionTerminal/6d9d69e3898f45169a441632b325c7b4

题目描述
计算最少出列多少位同学,使得剩下的同学排成合唱队形

说明:

N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。
合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足存在i(1<=i<=K)使得T1<T2<......<Ti-1<ti>Ti+1>......>TK。</ti>

你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。

注意不允许改变队列元素的先后顺序
请注意处理多组输入输出!

输入描述:
整数N

输出描述:
最少需要几位同学出列

示例1
输入
8
186 186 150 200 160 130 197 200
输出
4

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            int[] arr = new int[n];
            for (int i = 0; i < n; i++) {
                arr[i] = sc.nextInt();
            }

            int[] arr1 = new int[n]; //存储每个数左边小于其的数的个数
            int[] arr2 = new int[n];//存储每个数右边小于其的数的个数
            arr1[0] = 1;            //最左边的数设为1
            arr2[n - 1] = 1;        //最右边的数设为1
            for (int i = 0; i < n; i++) {
                arr1[i] = 1;
                for (int j = 0; j < i; j++) {
                    if (arr[i] > arr[j]) {   //动态规划
                        arr1[i] = Math.max(arr1[j] + 1, arr1[i]);
                    }
                }
            }
            for (int i = n - 1; i >= 0; i--) {
                arr2[i] = 1;
                for (int j = n - 1; j > i; j--) {
                    if (arr[i] > arr[j]) {   //动态规划
                        arr2[i] = Math.max(arr2[i], arr2[j] + 1);
                    }
                }
            }
            int[] res = new int[n];
            for (int i = 0; i < n; i++) {
                res[i] = arr1[i] + arr2[i] - 1; //两个都包含本身
            }

            int max = 1;
            for (int i = 0; i < n; i++) {
                if (res[i] > max) {
                    max = res[i];
                }
            }
            System.out.println(n - max);
        }

    }
}
全部评论
思路很清晰
1 回复 分享
发布于 2021-04-09 21:48
会超时,为什么?
点赞 回复 分享
发布于 2021-01-19 18:30
看么白了,牛
点赞 回复 分享
发布于 2021-01-25 23:18
没看懂
点赞 回复 分享
发布于 2021-05-05 16:12

相关推荐

评论
14
6
分享

创作者周榜

更多
牛客网
牛客企业服务