1 条题解
-
0
📝 题目大意
给定三个字符 ,分别表示 与 、 与 、 与 的年龄大小关系(
<表示前者更年轻,>表示前者更年长)。保证输入无矛盾,求三兄弟中年龄排第二(老二)的是谁。💡 解题思路
-
题目分析:只有三个人,且输入保证自洽,因此只需根据三个比较关系推断出中间那个人。数据范围极小(每个字符仅为
<或>),可以直接枚举或逻辑判断。 -
算法推导:
- 代码中读入三个字符
a(),b(),c()。 - 核心观察:如果 是老二,那么 必然比一个人大、比另一个人小,即 和 必然不同(一个
<一个>)。因此a != b时,答案是A。 - 若 不是老二(即
a == b),则 要么是最大、要么是最小,此时老二在 和 之间:- 当
a == c时():无论 是最大还是最小, 都处于中间位置,答案是B。 - 当
a != c时(): 处于中间位置,答案是C。
- 当
- 代码中读入三个字符
-
边界与细节:
- 输入保证是三个字符,且均为
<或>,不会出现=或非法字符。 - 由于只有三个人,使用
cin读取字符即可,无需特殊处理空格(cin默认跳过空白符)。
- 输入保证是三个字符,且均为
⏱️ 复杂度分析
- 时间复杂度:,仅做常数次比较。
- 空间复杂度:,仅使用三个字符变量。
💻 标准代码 (C++)
#include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); char a,b,c;cin>>a>>b>>c; // a = S_AB, b = S_AC, c = S_BC // 若 A 是老二,则 S_AB 与 S_AC 必不相同(一个 < 一个 >) if(a!=b)cout<<'A'; // 否则 A 不是老二(A 是最大或最小),此时若 S_AB == S_BC,则 B 在中间 else if(a==c)cout<<'B'; // 否则 C 在中间 else cout<<'C'; return 0; } -
- 1
信息
- ID
- 828
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者