美文网首页
找出身高差最小的两个人

找出身高差最小的两个人

作者: simon_kin | 来源:发表于2021-02-09 23:31 被阅读0次

    题目描述

    输入一组身高在170到190之间(5个身高),比较身高差,选出身高差最小的两个身高;若身高差相同, 选平均身高高的那两个身高;从小到大输出; 如输入 170 181 173 186 190输出 170 173

    方案不是很好,中途写的一半发现错了,临时补救的,可以直接跳过看第二种方式。

    public class Main {
    
        public static void main(String[] args) throws Exception{
    
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
            String str;
    
            while ( (str= br.readLine())!=null){
                String arr[] = str.split(" ");
                int len = arr.length;
                int[] num = new int[len];
    
    
                int min = Integer.MAX_VALUE;
                int mi = 0;
                int mj = 0;
    
                for (int i=0;i<len;i++){
                    num[i] = Integer.valueOf(arr[i]);
                }
                int[][] dp = new int[len][len];
    
                for (int i=0;i<len;i++){
                    for (int j=0;j<len;j++){
                        if (i != j){
                            dp[i][j] = Math.abs(num[i]-num[j]);
                            if ( dp[i][j] < min){
                                min = dp[i][j];
                                mi= i;
                                mj = j;
                            }
                        }
                    }
                }
    
                for (int i=0;i<len;i++){
                    for (int j=0;j<len;j++){
                        if (i != j && dp[i][j] == min){
                            if ((num[i] + num[j]) > (num[mi] + num[mj])){
                                mi= i;
                                mj = j;
                            }
                        }
                    }
                }
                System.out.println(num[mi] + " " + num[mj]);
            }
    
        }
    }
    

    方式二

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    
    public class Main {
    
        public static void main(String[] args) throws Exception{
    
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String str;
            while ( (str= br.readLine())!=null){
    
                // 存放最小值
                int min = Integer.MAX_VALUE;
                // 存放平均值 两个身高之和即可
                int avr = Integer.MIN_VALUE;
                //第一个人的身高
                //第二个人的身高
                int pre=0;
                int post=0;
    
                String[] strr = str.split(" ");
                int len = strr.length;
                int[] arr = new int[len];
                for (int i=0;i<len;i++){
                    arr[i] = Integer.valueOf(strr[i]);
                }
    
                for (int i=0;i<len;i++){
                    for (int j=0;j<len;j++){
    
                        if (i!=j){
                            if (Math.abs(arr[i]-arr[j]) < min){
                                min = Math.abs(arr[i]-arr[j]);
                                pre = arr[i];
                                post = arr[j];
                                avr = pre + post;
                            }else if (Math.abs(arr[i]-arr[j]) == min){
                                if (arr[i] + arr[j] > avr){
                                    pre = arr[i];
                                    post = arr[j];
                                    avr = pre + post;
                                }
                            }
                        }
                    }
                }
                if (pre < post){
                    System.out.println(pre + " " + post);
                }else {
                    System.out.println(post + " " + pre);
                }
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:找出身高差最小的两个人

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