1 条题解
-
0
G1025 [GESP202603 一级] 交朋友 题解
难度:2(GeekPi教学评定);知识点:绝对值、最值、多条件比较。
解题思路
以自身身高h为基准,检查三个候选人的身高x。优先选择绝对差abs(x-h)最小者,若差相同则选择更矮者。参考代码比较“身高差、身高”二元组。
为什么正确
逐个候选与当前最优比较,始终保留已看过的人中按题目规则最优的一人,最终即全体最优。
易错点
不能只比身高大小;差相同时必须选择身高较小者。二元组也可改写为两个普通if条件。
复杂度
时间:O(3),本题为常数;额外空间:O(1)。
参考代码(C++17)
#include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int h,x,ans=-1; cin>>h; for(int i=0;i<3;i++) { cin>>x; if(ans==-1||make_pair(abs(x-h),x)<make_pair(abs(ans-h),ans))ans=x; } cout<<ans; }来源与说明
本题解为配套教学整理,非官方题解。题库使用自行生成的测试数据,6个测试点。
- 1