描述
华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。
比赛规则和实际比赛规则相同, 在11分制下比分为10:11时还要继续比赛,直到分数差距达到2分;同理21分制下比分为20: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之后的所有内容,E后面可能有干扰文字。
输出格式
输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分(按比赛信息输入顺序)。其中第一部分是11分制下的结果,第二部分是21分制下的结果,两部分之间由一个空行分隔。
样例输入1
WWWWWWWWWWWWWWWWWWWW
WWLWE
样例输出1
11:0
11:0
1:1
21:0
2:1
限制
各个测试点1s
提示
十分简单,小心输入输出格式!^_^
一个简单的模拟 第一次WA了 直接找不出错误,还是又重写了一遍才过的
#include<cstdio>//第一遍50分
#include<iostream>
#include<algorithm>
using namespace std;
char s;
int vct,sum;
int a1[10000],a2[10000];
int b1[10000],b2[10000];
int abs(int a) {
if(a<0) a=-a;
return a;
}
int main() {
freopen("13.in","r",stdin);
while(cin>>s) {
if(s=='E') break;
if(s=='W') {
a1[vct]++;
b1[sum]++;
if(a1[vct]>=11&&abs(a1[vct]-a2[vct]>=2)) vct++;
if(b1[sum]>=21&&abs(b1[sum]-b2[sum]>=2)) sum++;
}
if(s=='L') {
a2[vct]++;
b2[sum]++;
if(a2[vct]>=11&&abs(a1[vct]-a2[vct]>=2)) vct++;
if(b2[sum]>=21&&abs(b1[sum]-b2[sum]>=2)) sum++;
}
}
for(int i=0;i<=vct;i++) printf("%d:%d\n",a1[i],a2[i]);
if(a1[vct+1]||a2[vct+1]) printf("%d:%d\n",a1[vct+1],a2[vct+1]);
printf("\n");
for(int i=0;i<=sum;i++) printf("%d:%d\n",b1[i],b2[i]);
if(b1[sum+1]||b2[sum+1]) printf("%d:%d\n",b1[sum+1],b2[sum+1]);
return 0;
}
#include<iostream>//AC代码
#include<cmath>
#include<string>
using namespace std;
int main(){
string s1,s2;
while(getline(cin,s2))s1+=s2;
int i=0;
int a=0,b=0;
while(s1[i]!='E'){
switch(s1[i]){
case 'W':a++;break;
case 'L':b++;break;
}
if((a>=11||b>=11)&&abs(a-b)>=2){
cout<<a<<':'<<b<<endl;
a=b=0;
}
i++;
}
cout<<a<<':'<<b<<endl;
cout<<endl;
i=0,a=0,b=0;
while(s1[i]!='E'){
switch(s1[i]){
case 'W':a++;break;
case 'L':b++;break;
}
if((a>=21||b>=21)&&abs(a-b)>=2){
cout<<a<<':'<<b<<endl;
a=b=0;
}
i++;
}
cout<<a<<':'<<b<<endl;
return 0;
}