#4548. [GESP202603一级]交朋友-T1
[GESP202603一级]交朋友-T1
题目一:交朋友
题目描述
班上有四个小朋友,身高为 ,其中 Alice 的身高为 。
Alice 想和她身高最接近的人交朋友。如果有多人符合,则 Alice 想和 其中最矮 的人做朋友。
输入格式
共 4 行,第 i 行包含一个整数 ,表示班上小朋友的身高。
输出格式
输出 1 行,一个整数 h,表示 Alice 想交的朋友的身高。
样例
输入:
150
165
135
133
输出:
135
数据范围
- 互不相同
解题思路
我们可以用最朴素的方法来算“差距”:如果对方比 Alice 高,就用“对方的身高减去 Alice 的身高”;如果对方比 Alice 矮,就用“Alice 的身高减去对方的身高”。这样算出来的结果永远是一个正数,代表了两个人之间的距离。
具体的逻辑是这样的:我们先请出第 2 个小朋友,算好他跟 Alice 的差距,暂时把他当成“最好的朋友”。接着,请出第 3 个小朋友,算出他的差距。如果他的差距更小,或者差距一样大但他更矮,那他就成了新的“最好朋友”。最后,我们再用同样的办法去请第 4 个小朋友来挑战。这样一轮轮比下来,最后留下的那个人就是我们要找的答案了。
int main() {
// h1 是 Alice,h2, h3, h4 是其他三个小朋友
int h1, h2, h3, h4;
// 读入四个小朋友的身高
________________;
// --- 计算第 2 个小朋友和 Alice 的差距 d2 ---
int d2;
if (h2 > h1) {
d2 = ________;
} else {
d2 = ________;
}
// 计算第 3 个小朋友和 Alice 的差距 d3,第 4 个小朋友和 Alice 的差距 d4
// 请你根据刚刚的逻辑完成第 3、4 个小朋友的代码。
________;
// ans 用来记下目前最合适的朋友身高,m 记录最小的差距
// 我们先让第 2 个小朋友当“擂主”
int ans = h2, m = d2;
// 让第 3 个小朋友“打擂台”
if (d3 < m) {
________;
________;
}
// 如果差距一样大,那就看谁更矮,矮的那个赢
else if (d3 == m) {
if (________) {
________;
}
}
// 让第 4 个小朋友来挑战
// 逻辑和刚才一样:先看差距,再看身高
// 请你根据刚刚的逻辑完成第 4 个小朋友的代码。
________;
// 想一想,答案是什么,如何输出?
________;
return 0;
}
粤公网安备44195502000178号