美文网首页计算客刷题笔记
身高排队(没有运行通过)

身高排队(没有运行通过)

作者: Airycode | 来源:发表于2018-04-20 14:01 被阅读90次

    实验小学为了强健学生的身体,每天课间都要组织学生在户外学做广播体操。

    这一天,五年级三班的所有同学在老师的指引下将队形排成了 MM 行 NN 列。现已知所有同学的身高,数值为整数,单位:厘米。要求在所有同学中:

    挑选出每列身高最高的同学作为此列的小队长为同学们带操;
    将所有同学按身高从高到低的顺序进行排队;
    求出所有同学们的平均身高(要求:四舍五入保留整数);
    统计出不小于平均身高的学生人数。
    请同学们用计算机编程的方法来解决以上问题。

    输入格式

    输入共有 M+1M+1 行:

    第一行有:用 11 个空格隔开的两个整数 MM、NN,分别代表学生的行数和列数(其中 1\leq M\eq 10,1\leq N\leq 101≤N≤10);

    后 MM 行有:每一行对应的是 NN 列数据,表示所有学生的身高尺寸,数值为整数,单位:厘米(其中:140140 厘米\leq≤ 身高 \leq 170≤170 厘米,不需判断此条件),数据之间空 11 格。

    输出格式

    输出共有 M+3M+3 行:

    前 MM 行:每行一个数据为各列中身高最高的同学的高度 (要求:各列按从左到右的顺序);
    第 M+1M+1 行:为所有同学按身高从高到低的顺序排队的高度 (要求数据之间有1个空格);
    第 M+2M+2 行:只有一个数据为所有同学的平均身高 (要求:四舍五入,保留整数);
    第 M+3M+3 行:只有一个数据,为不小于平均身高的学生人数。
    样例输入

    3 4
    141 161 156 167
    170 163 168 157
    162 145 153 163
    样例输出

    170
    163
    168
    167
    170 168 167 163 162 161 157 156 153 145 141
    159
    7
    代码实现:

    package 排序;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            int M = input.nextInt();
            int N = input.nextInt();
            int [][] arr = new int[M][N];
            List<Integer> list = new ArrayList<Integer>();
            int [] array = new int [M*N];
            int k=0;
            for (int i=0;i<arr.length;i++) {
                for (int j=0;j<arr[0].length;j++) {
                    arr[i][j] = input.nextInt();
                    list.add(arr[i][j]);
                    array[k++] = arr[i][j];
                }
            }
            
            //求每一行的最大值
            List<Integer> result = getColMax(arr);
            print(result);
            
            //求所有的排序
            sort(array);
            //求平均数
            int avg = getAvg(list);
            System.out.println(avg);
            //统计出不小于平均数
            List<Integer> max = getThanAvg(list);
            System.out.println(max.size());
            
        }
    
        private static void sort(int [] array) {
            Arrays.sort(array);
            for (int i=array.length-1;i>=0;i--) {
                System.out.print(array[i]+" ");
            }
            System.out.println();
        }
    
        //统计大于平均值的数
        private static List<Integer> getThanAvg(List<Integer> list) {
            int avg = getAvg(list);
            List<Integer> resultList = new ArrayList<Integer>();
            if (list != null && list.size()>0) {
                for (int i=0;i<list.size();i++) {
                    int temp = list.get(i);
                    if (avg < temp) {
                        resultList.add(temp);
                    }
                }
            }
            
            return resultList;
        }
    
        //求平均值
        private static int getAvg(List<Integer> list) {
            double sum = 0;
            if (list != null && list.size() > 0) {
                for (int i = 0;i<list.size();i++) {
                    sum += list.get(i);
                }
            }
            
            int result = (int)Math.round(sum/list.size());
            
            return result;
        }
    
        //输出结果
        private static void print(List<Integer> result) {
            if (result != null && result.size()>0) {
                for (int i=0;i<result.size();i++) {
                    System.out.println(result.get(i));
                }
            }
            
        }
    
        //得到每一行的最大值
        private static List<Integer> getRowMax(int[][] arr) {
            List<Integer> result = new ArrayList<Integer>();
            int max = Integer.MIN_VALUE;
            for (int i=0;i<arr.length;i++) {
                for (int j=0;j<arr[0].length;j++) {
                    if (max <= arr[i][j]) {
                        max = arr[i][j];
                    }
                }
                result.add(max);
            }
            return result;
        }
        
        //得到每一列的最大值
        private static List<Integer> getColMax(int[][] arr) {
                List<Integer> result = new ArrayList<Integer>();
                
                for (int i=0;i<arr[0].length;i++) {
                    int max = Integer.MIN_VALUE;
                    for (int j=0;j<arr.length;j++) {
                        if (max <= arr[j][i]) {
                            max = arr[j][i];
                        }
                    }
                    result.add(max);
                }
                return result;
            }
    }
    
    

    相关文章

      网友评论

        本文标题:身高排队(没有运行通过)

        本文链接:https://www.haomeiwen.com/subject/dqgakftx.html