B4244 [语言月赛 202503] 水流 题解
[语言月赛 202503] 水流 题解
Source & Knowledge
本题来源于 2025 年 3 月的语言月赛,主要考察简单分支结构的运用。
文字题解
题目假设一个池塘被一个闸门分为两半。左侧一半水面高度为
我们不妨首先考虑在哪些情况下水流的流向会是从左向右、从右向左、不流动。
-
如果水流从左向右流动,那么一定会满足以下条件:
- 左侧水面高于右侧水面
a > b ; - 左侧水面高于闸门
a > c ,这是水能够流动的必须要求。
满足上面两条条件后,水流一定会从左向右流动。如果任何一条条件不满足,水则一定不会流动。
- 左侧水面高于右侧水面
-
水流从右向左流动同理,一定会满足以下条件:
- 右侧水面高于左侧水面
b > a ; - 右侧水面高于闸门
b > c 。
- 右侧水面高于左侧水面
除上述两种情况外,其他任何情况下水都不会流动。
因此我们可以编写如下代码:
// 变量定义、读入部分省略
if (a > b && a > c) {
cout << "LeftToRight" << endl;
} else if (b > a && b > c) {
cout << "RightToLeft" << endl;
} else {
cout << "None" << endl;
}