[GESP2603一级] 交朋友

题目信息:

目的:要选出与h1身高最接近的、较矮的一方

矮个优先原则,先将h2、h3、h4从小到大排序

依次计算身高差,并保存最小身高差对应的身高答案

解题逻辑:

#include <bits/stdc++.h>
using namespace std;
int main(){
    int h1,h2,h3,h4;
    cin>>h1>>h2>>h3>>h4;
    // 先确定 h2<h3<h4 从矮到高
    if(h2>h3) {
        int t=h2;
        h2=h3;
        h3=t;
    }
    if(h2>h4) {
        int t=h2;
        h2=h4;
        h4=t;
    }
    if(h3>h4) {
        int t=h3;
        h3=h4;
        h4=t;
    }
    int c=h1-h2,ans=h2; // 假设答案是h2,c为高度差
    if(c<0) c=0-c; // 保证身高差为正数
    int d=h1-h3,e=h1-h4; // 计算另外两名同学身高差
    if(d<0) d=0-d;
    if(e<0) e=0-e;
    if(d<c){
        ans=h3;
        c=d;
    }
    if(e<c){
        ans=h4;
        c=e;
    }
    cout<<ans;
    return 0;
}