题目链接
题目大意
乒乓球分为 11 分制和 21 分制,当其中一方分数大于等于11(11分制)或者21(21分制)并且大于等于另一方分数2分时比赛结束。输入一串字符串,有W,L,E组成,W表示华华拿一分,L表示华华对手拿一分,E表示比赛结束。
题目思路
这是一道模拟题,这里讲一下细节就可以。
- 其中一方分数 s c o r e > = 11 且 a b s ( 分数差 ) > = 2 score>=11 且 abs(分数差) >= 2 score>=11且abs(分数差)>=2
- 0:0也要输出
- 输出格式:第一部分是 1111 分制下的结果,第二部分是 2121 分制下的结果,两部分之间由一个空行分隔。
输入与输出
输入
WWWWWWWWWWWWWWWWWWWW
WWLWE
输出
11:0
11:0
1:1
21:0
2:1
AC代码
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<list>
#include<stack>
using namespace std;
struct R
{
int ll, rr;
}R1[10005],R2[10005];
int main(int argc, char* argv[])
{
string s;
int l1 = 0, l2 = 0, r1 = 0, r2 = 0;
int c1 = 0, c2 = 0;
while (cin >> s)
{
int len = s.length();
int i;
for (i = 0; i < len; ++i)
{
if (s[i] == 'W')
{
l1++; l2++;
}
else if (s[i] == 'L')
{
r1++; r2++;
}
else break;
//分差大于或者等于 2
if ((l1 >= 11 || r1 >= 11) && abs(l1 - r1) >= 2)
{
R1[c1].ll = l1;
R1[c1].rr = r1;
c1++;
l1 = r1 = 0;
}
if ((l2 >= 21 || r2 >= 21) && abs(l2 - r2) >= 2)
{
R2[c2].ll = l2;
R2[c2].rr = r2;
c2++;
l2 = r2 = 0;
}
}
if (s[i] == 'E')
{
R1[c1].ll = l1;
R1[c1].rr = r1;
c1++;
R2[c2].ll = l2;
R2[c2].rr = r2;
c2++;
break;
}
}
for (int i = 0; i < c1; ++i)
{
printf("%d:%d\n", R1[i].ll, R1[i].rr);
}
printf("\n");
for (int i = 0; i < c2; ++i)
{
printf("%d:%d\n", R2[i].ll, R2[i].rr);
}
return 0;
}