11.7---叠罗汉表演节目(CC150)

1,牛客网第一题:这其实跟找最长递增子序列是一个东西。注意的地方是,返回的是最大的dp,而不是dp[N-1]。

答案:

public static int getHeight(int[] men, int n) {
        // write code here
        int res = 0;
        int[] dp = new int[n];
        dp[0] = 1;
        for(int i =1;i <n;i++){
            int max = 0;
            for(int j =0;j < i;j++){
                if(men[j] < men[i]){
                    max = Math.max(max, dp[j]);
                }
            }
            dp[i] = max + 1;
            res = Math.max(res, dp[i]);
        }

        return res;

    }
View Code

 2牛客网第二题:多了一个条件,身高,那就先对单一元素排序,在进行dp。

public static int getHeight(int[][] men, int n) {
        // write code here
          for (int i = 0; i < n; i ++) {
                for (int j = 1; j < n - i; j ++) {
                    if (men[j][0] < men[j-1][0]) {
                       int temp = men[j][0];
                       men[j][0] = men[j-1][0];
                       men[j-1][0] = temp;
                       
                       int temp1 = men[j][1];
                       men[j][1] = men[j-1][1];
                       men[j-1][1] = temp1;
                    }
                     
                }
            }
          System.out.println(men[1][0]);
    
        int res = 0;
        int[] dp = new int[n];
        dp[0] = 1;
        for(int i =1;i <n;i++){
            int max = 0;
            for(int j =0;j < i;j++){
                if( men[j][1] < men[i][1]){
                    max = Math.max(max, dp[j]);
                }
            }
            dp[i] = max + 1;
            res = Math.max(res, dp[i]);
        }

        return res;

    }
原文地址:https://www.cnblogs.com/yueyebigdata/p/5100714.html