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

找出身高差最小的两个人

作者: 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