洛谷乒乓球题解:11 分制与 21 分制比赛结果计算全攻略
这道题目要求我们根据乒乓球比赛的得分记录,分别计算11分制和21分制下的比赛结果。我们需要处理输入的字符串,忽略'E'之后的内容,然后分别模拟两种赛制下的比赛过程。 方法思路 1. 输入处理:读取所有输入行,直到遇到字符'E'为止,将所有有效的'W'和'L'字符拼接成一个字符串。 2. 模拟比赛过程:分别处理11分制和21分制: - 11分制:每局比赛先达到11分且领先至少2分的选手赢得该局。如果比分达到10:10,则需要继续比赛直到一方领先2分。 - 21分制:规则类似,但每局需要达到21分且领先至少2分。 3. 输出结果:每局比赛结束后,立即记录比分,并开始下一局。所有比分按顺序输出,11分制和21分制的结果之间用空行分隔。 解决代码 ```python def process_game(scores, rule): a = 0 b = 0 results = [] for c in scores: if c == 'W': a += 1 elif c == 'L': b += 1 # Check if the game ends according to the rule if (a >= rule or b >= rule) and abs(a - b) >= 2: results.append(f"{a}:{b}") a, b = 0, 0 # After loop, handle remaining scores that didn't complete a game if a != 0 or b != 0: results.append(f"{a}:{b}") return results def main(): import sys data = [] for line in sys.stdin: if 'E' in line: data.append(line[:line.index('E')]) break data.append(line.strip()) scores = ''.join(data) # Process 11-point rule results_11 = process_game(scores, 11) # Process 21-point rule results_21 = process_game(scores, 21) # Output results for res in results_11: print(res) print() for res in results_21: print(res) if __name__ == "__main__": main() ``` 代码解释 1. process_game函数:处理比赛得分字符串,根据给定的赛制规则(11分或21分)模拟比赛过程。每次得分后检查是否满足结束条件(达到规定分数且领先至少2分),满足则记录比分并重置当前比分。 2. main函数:读取输入数据,拼接有效字符(忽略'E'之后的字符),分别调用process_game处理11分制和21分制,输出结果。两部分结果之间用空行分隔。 3. 输入处理:使用sys.stdin读取所有行,遇到'E'时停止,并截取有效部分。 4. 输出处理:遍历两种赛制的结果列表,逐行输出比分。 这种方法确保正确解析输入数据,并根据不同赛制规则准确模拟比赛过程,输出符合要求的比分结果。 ######[AI问答 | 675点数解答 | 2025-04-28 18:19:45]
- 洛谷乒乓球题解:11 分制与 21 分制比赛结果计算全攻略(DeepSeek | 675点数解答 | 2025-04-28 18:19:45)303
- C++实现:计算两位正整数十位与个位数字之和(附代码详解与复杂度分析)(字节豆包 | 352点数解答 | 2026-01-16 23:00:07)51
- 求解 1 至 n 内第 k 大孤独数:质数与余数的巧妙探寻(字节豆包 | 298点数解答 | 2025-11-10 20:01:57)152
- 巧用二分图匹配:Python实现有向无环图最小路径覆盖问题求解(字节豆包 | 714点数解答 | 2025-12-12 18:51:59)52
- 工作日报:用二分图匹配算法攻克有向无环图最小路径覆盖问题(字节豆包 | 1186点数解答 | 2025-12-13 10:23:59)33
- C++ 实现:计算两整数间个位数为 3 的数字和并判断是否为 3 的倍数(字节豆包 | 358点数解答 | 2025-07-12 21:48:22)326
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)66
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)24
- Python 编程:计算 n 个正整数中小于 x 的数的总和(字节豆包 | 233点数解答 | 2025-08-02 21:35:03)295
- C++ 实现:计算 n 个正整数中小于 x 的数的总和及注意事项(字节豆包 | 255点数解答 | 2025-08-02 21:35:27)204
- C++实现:计算n个正整数中小于x的数的总和(字节豆包 | 341点数解答 | 2025-08-02 21:52:19)256
- 10年沉浮!10000元买基金最终盈利还是亏损?(百度文心 | 521点数解答 | 2024-05-14 15:52:27)176