P1042 [NOIP2003 普及组] 乒乓球
1|0题目描述
华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在 11 分制和 21 分制下,双方的比赛结果(截至记录末尾)。
比如现在有这么一份记录,(其中 W 表示华华获得一分,L 表示华华对手获得一分):
WWWWWWWWWWWWWWWWWWWWWWLW
在 11 分制下,此时比赛的结果是华华第一局 11 比 0 获胜,第二局 11 比 0 获胜,正在进行第三局,当前比分 1 比 1。
而在 21 分制下,此时比赛结果是华华第一局 21 比 0 获胜,正在进行第二局,比分 2 比 1。
如果一局比赛刚开始,则此时比分为 0 比 0。直到分差大于或者等于 2,才一局结束。
你的程序就是要对于一系列比赛信息的输入(WL 形式),输出正确的结果。
2|0输入格式
每个输入文件包含若干行字符串,字符串有大写的 W 、 L 和 E 组成。其中 E 表示比赛信息结束,程序应该忽略 E 之后的所有内容。
3|0输出格式
输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分(按比赛信息输入顺序)。
其中第一部分是 11 分制下的结果,第二部分是 21 分制下的结果,两部分之间由一个空行分隔。
4|0输入输出样例
输入#1
输出#1
5|0说明/提示
每行至多 25 个字母,最多有 2500 行。
【题目来源】
NOIP 2003 普及组第一题
思路:首先是存储字符串中字符E之前的字符(即有效字符),可以通过一个判断条件为true的死循环来不断输入字符,在循环内部对字符输入是否为E进行判断,如果是E就break退出循环。·首先进行11分制比分处理,通过循环逐个遍历字符,是W的话就让华华胜利场数加1,如果为L就让华华失败场数加1,根据题意必须至少有一位选手的比赛分数大于等于11且两位选手的分数差要大于等于2,所以把这个作为比赛结束的判断条件,在结束时输出双方比分。21赛制同理11赛制。要注意的是,有可能一场比赛都没有进行,比如输入的字符串只包含字符E,此时应直接输出0:0,也有可能上一轮比赛结束时刚好下一轮比赛要开始,那么这个时候不仅要输出上一轮的比赛分数,还要输出0:0,例如输入的字符串是WWWWWWWWWWWE,这个时候就要输出11:0和0:0,意思是说上一轮已经分出胜负,而由于比赛场数正好是11,所以下一轮比赛刚刚开始,刚开始双方比分都是0,所以0:0也要输出(只输出11:0会卡最后一个点)。最后要记得及时重置每一场的比分,以防影响下一轮比分的记录。
代码:
开头的#define _CRT_SECURE_NO_WARNINGS是防止VS2019的scanf报错用,其他编译器可以不要这一行。
__EOF__

本文链接:https://www.cnblogs.com/KaguraSakura/p/15008544.html
关于博主:hello~好久不见,喜欢的话点个赞吧
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!