您的位置:首页 > 其它

交叉模拟——乒乓球

2017-01-13 16:43 155 查看
SSL 1027

洛谷 P1042 乒乓球

题目描述

华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。

比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分):

WWWWWWWWWWWWWWWWWWWWWWLW

在11分制下,此时比赛的结果是华华第一局11比0获胜,第二局11比0获胜,正在进行第三局,当前比分1比1。而在21分制下,此时比赛结果是华华第一局21比0获胜,正在进行第二局,比分2比1。如果一局比赛刚开始,则此时比分为0比0。直到分差大于或者等于2,才一局结束。

你的程序就是要对于一系列比赛信息的输入(WL形式),输出正确的结果。

分析

直接模拟比赛场景,读入需要注意一下

var
a:array[1..50000]of char;
i,j,k,w,l:longint;
s:char;
begin
while not eof do
begin
read(s);
if s='E' then break;
if (s='W') or (s='L')
then begin
inc(k);
a[k]:=s;
end;
end;
for i:=1 to k do
begin
if a[i]='W' then inc(w)
else inc(l);
if ((w>10) or (l>10)) and (abs(w-l)>1)
then begin
writeln(w,':',l);
w:=0;
l:=0;
end;
end;
if (w<>0) or (l<>0)
then writeln(w,':',l);
if (w=0) and (l=0) then writeln(0,':',0);
l:=0;  w:=0;
writeln;
for i:=1 to k do
begin
if a[i]='W' then inc(w)
else inc(l);
if ((w>20) or (l>20)) and (abs(w-l)>1)
then begin
writeln(w,':',l);
w:=0;
l:=0;
end;
end;
if (w<>0) or (l<>0)
then writeln(w,':',l);
if (w=0) and (l=0) then writeln(0,':',0);
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: