中兴笔试0ac,大佬帮忙看看问题在哪

//  第二题, 思路是最长*子序列
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()){

            int T = sc.nextInt();
            int[] res = new int[T];
            for (int i = 0; i < T; i++){

                int N = sc.nextInt();
                int[] arr = new int[N];
                for (int j = 0; j < N; j++){
                    arr[j] = sc.nextInt();
                }

                res[i] = dp(arr);
            }

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

    public static int dp(int[] arr){

        int[] Up = new int [arr.length];
        Up[0] = 1;
        int[] Down = new int [arr.length];
        Down[0] = 1;

        int res = 0;
        for (int i = 1; i < arr.length; i++){

            for (int j = i - 1; j >= 0; j--){
                // 升
                if (arr[j] <= arr[i]) {
                    Up[i] = Math.max(Up[j] + 1, Up[i]);
                } else {
                    Down[i] = Math.max(Down[j] + 1, Down[i]);
                }
            }
            res = Math.max(res, Math.max(Up[i] , Down[i]));
        }

        return arr.length - res;
    }
}



// 第一题, 10%

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        while (sc.hasNext()){
            int M = sc.nextInt();
            int N = sc.nextInt();

            if (M <= 0 || N <= 0){
                continue;
            }
            int[][] inputs = new int[M][N];
            int[] sum = new int[N];


            for (int i = 0; i < M; i++){
                for (int j = 0; j < N; j++){
                    inputs[i][j] = sc.nextInt();
                    sum[j] += inputs[i][j];
                }
            }

            // mean
            int count = 0;

            double[] mean = new double[N];

            for (int i = 0; i < N; i++){
                mean[i] = sum[i] * 1.0 / M;
            }

            // i 每个学生
            for (int i = 0; i < M; i++){
                // j 每门成绩
                for (int j = 0; j < N; j++){
                    if (mean[j] <= inputs[i][j]){
                        count++;
                        break;
                    }

                }
            }

            System.out.println(count);

        }
    }
}


#中兴##笔试题目#
全部评论
第一题思路跟你一样,但是0ac
点赞 回复 分享
发布于 2020-09-07 11:51
第一题得仔细看题,题目说的是n个学生m科考试,接下来的输入是m行,一行是所有学生这一门课的成绩,而不是每行是一个学生所有课的成绩
点赞 回复 分享
发布于 2020-09-07 12:09
第一题,你没有考虑重复呀
点赞 回复 分享
发布于 2020-09-07 12:10
第一门课程a学生超过平均值发了消息,a学生第二门课程超过平均值就不需要再发了
点赞 回复 分享
发布于 2020-09-07 12:19
第一题AC的楼主可以参考下 static class Node { List<Integer> points; public Node() { this.points = new ArrayList<>(); } public void add(int point) { if(points == null){ points = new ArrayList<>(); } points.add(point); } public boolean checkOverAVG(double[] avg) { for(int i=0; i<avg.length; i++){ if(points.get(i) > avg[i]){ return true; } } return false; } @Override public String toString() { return "Node{" + "points=" + points + '}'; } }
点赞 回复 分享
发布于 2020-09-07 13:26

相关推荐

牛客279957775号:铁暗恋
点赞 评论 收藏
分享
狠赚笔第一人:学计算机自己不努力怪大环境?我大一就拿到了美团大厂的offer,好好看看自己有没有努力查看图片
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务