noip2003复赛普及组第一题——乒乓球

1 /*======================================================================= 2 题一、乒乓球(Table.pas) 3 【问题背景】国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革, 4 以推动乒乓球运动在全球的普及。其中11分制改革引起了很大的争议,有一部分球员 5 因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球 6 研究工作,意图弄明白11分制和21分制对选手的不同影响。在开展他的研究之前, 7 他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。 8 【问题描述】华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表, 9 然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。 10 比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分): 11 WWWWWWWWWWWWWWWWWWWWWWLW 12 在11分制下,此时比赛的结果是华华第一局11比0获胜,第二局11比0获胜,正在进行 13 第三局,当前比分1比1。而在21分制下,此时比赛结果是华华第一局21比0获胜, 14 正在进行第二局,比分2比1。如果一局比赛刚开始,则此时比分为0比0。 15 你的程序就是要对于一系列比赛信息的输入(WL形式),输出正确的结果。 16 【输入格式】每个输入文件包含若干行字符串(每行至多20个字母),字符串有 17 大写的W、L和E组成。其中E表示比赛信息结束,程序应该忽略E之后的所有内容。 18 【输出格式】输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分 19 (按比赛信息输入顺序)。其中第一部分是11分制下的结果,第二部分是21分制 20 下的结果,两部分之间由一个空行分隔。 21 【输入样例】 22 WWWWWWWWWWWWWWWWWWWW 23 WWLWE 24 【输出样例】 25 11:0 26 11:0 27 1:1 28 29 21:0 30 2:1 31 =========================================================================*/ 32 #include<stdio.h> 33 #include<math.h> 34 int main() 35 { 36 int W1,L1,W2[10000]={0},L2[10000]={0},i,j; 37 char ch; 38 int f1=0,f2=0; 39 freopen("table.in0","r",stdin); 40 freopen("table.out0","w",stdout); 41 i=0; 42 W1=L1=0; 43 ch=getchar(); 44 while(ch!='E') 45 { 46 if(ch=='W') 47 { 48 W1++; 49 W2[i]++; 50 } 51 else if(ch=='L') 52 { 53 L1++; 54 L2[i]++; 55 } 56 if(W1>=11||L1>=11) 57 { 58 if(fabs(W1-L1)>=2) 59 { 60 f1=1; 61 printf("%d:%d\n",W1,L1); 62 W1=L1=0; 63 } 64 } 65 if(W2[i]>=21||L2[i]>=21) 66 { 67 if(fabs(W2[i]-L2[i])>=2) 68 { 69 i++; 70 } 71 } 72 73 ch=getchar(); 74 } 75 //下面是把11分制最后一组比赛结果给输出来 76 //注意:这里的做法是:最后一组比赛结果即便是0:0也要输出 77 //假如把下面屏蔽掉的部分启用,那么:假如只有一组而且是0:0那就输出,假如有多组,而且最后一组若是0:0,那最后一组不输出。(下面21分制相同) 78 /*if(f1==0) 79 {*/ 80 printf("%d:%d\n",W1,L1); 81 /*} 82 else 83 { 84 if((W1+L1)!=0) printf("%d:%d\n",W1,L1); 85 }*/ 86 printf("\n"); 87 for(j=0;j<i;j++) 88 { 89 f2=1; 90 printf("%d:%d\n",W2[j],L2[j]); 91 } 92 //下面把21分制最后一组比赛结果给输出来 93 //注意:这里的做法是:最后一组比赛结果即便是0:0也要输出 94 /*if(f2==0) 95 {*/ 96 printf("%d:%d\n",W2[j],L2[j]); 97 /*} 98 else 99 { 100 if((W2[i]+L2[i])!=0) 101 printf("%d:%d\n",W2[i],L2[i]); 102 }*/ 103 return 0; 104 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App