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

 /*=======================================================================
题一、乒乓球(Table.pas)
【问题背景】国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,
以推动乒乓球运动在全球的普及。其中11分制改革引起了很大的争议,有一部分球员
因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球
研究工作,意图弄明白11分制和21分制对选手的不同影响。在开展他的研究之前,
他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。
【问题描述】华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,
然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。
比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分):
WWWWWWWWWWWWWWWWWWWWWWLW
在11分制下,此时比赛的结果是华华第一局11比0获胜,第二局11比0获胜,正在进行
第三局,当前比分1比1。而在21分制下,此时比赛结果是华华第一局21比0获胜,
正在进行第二局,比分2比1。如果一局比赛刚开始,则此时比分为0比0。
你的程序就是要对于一系列比赛信息的输入(WL形式),输出正确的结果。
【输入格式】每个输入文件包含若干行字符串(每行至多20个字母),字符串有
大写的W、L和E组成。其中E表示比赛信息结束,程序应该忽略E之后的所有内容。
【输出格式】输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分
(按比赛信息输入顺序)。其中第一部分是11分制下的结果,第二部分是21分制
下的结果,两部分之间由一个空行分隔。
【输入样例】
WWWWWWWWWWWWWWWWWWWW
WWLWE
【输出样例】
11:0
11:0
1:1 21:0
2:1
=========================================================================*/
#include<stdio.h>
#include<math.h>
int main()
{
int W1,L1,W2[]={},L2[]={},i,j;
char ch;
int f1=,f2=;
freopen("table.in0","r",stdin);
freopen("table.out0","w",stdout);
i=;
W1=L1=;
ch=getchar();
while(ch!='E')
{
if(ch=='W')
{
W1++;
W2[i]++;
}
else if(ch=='L')
{
L1++;
L2[i]++;
}
if(W1>=||L1>=)
{
if(fabs(W1-L1)>=)
{
f1=;
printf("%d:%d\n",W1,L1);
W1=L1=;
}
}
if(W2[i]>=||L2[i]>=)
{
if(fabs(W2[i]-L2[i])>=)
{
i++;
}
} ch=getchar();
}
//下面是把11分制最后一组比赛结果给输出来
//注意:这里的做法是:最后一组比赛结果即便是0:0也要输出
//假如把下面屏蔽掉的部分启用,那么:假如只有一组而且是0:0那就输出,假如有多组,而且最后一组若是0:0,那最后一组不输出。(下面21分制相同)
/*if(f1==0)
{*/
printf("%d:%d\n",W1,L1);
/*}
else
{
if((W1+L1)!=0) printf("%d:%d\n",W1,L1);
}*/
printf("\n");
for(j=;j<i;j++)
{
f2=;
printf("%d:%d\n",W2[j],L2[j]);
}
//下面把21分制最后一组比赛结果给输出来
//注意:这里的做法是:最后一组比赛结果即便是0:0也要输出
/*if(f2==0)
{*/
printf("%d:%d\n",W2[j],L2[j]);
/*}
else
{
if((W2[i]+L2[i])!=0)
printf("%d:%d\n",W2[i],L2[i]);
}*/
return ;
}
上一篇:Maven 多环境 打包


下一篇:asp.net大数据导出execl实现分开压缩并下载