题目连接:http://www.rqnoj.cn/Problem_51.html
解题思路:一次读入一个字符,对每个字符进行处理,注意的是获胜的条件除了一方到达21 或11 球之外,还有需要超过两球,就是说20:21不算分出胜负,20:22才算。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const int N = 10005;
int main() {
char c;
int cntO[N][2], cntT[N][2];
int nO = 0, nT = 0;
memset(cntO, 0, sizeof(cntO));
memset(cntT, 0, sizeof(cntT));
while (scanf("%c", &c) == 1) {
if (c == 'E') break;
if (c == 'W') {
cntT[nT][0]++;
cntO[nO][0]++;
}
else if (c == 'L') {
cntT[nT][1]++;
cntO[nO][1]++;
}
if ((cntO[nO][0] >= 11 || cntO[nO][1] >= 11) && abs(cntO[nO][0] - cntO[nO][1]) > 1)
nO++;
if ((cntT[nT][0] >= 21 || cntT[nT][1] >= 21) && abs(cntT[nT][0] - cntT[nT][1]) > 1)
nT++;
}
for (int i = 0; i <= nO; i++)
printf("%d:%d\n", cntO[i][0], cntO[i][1]);
printf("\n");
for (int i = 0; i <= nT; i++)
printf("%d:%d\n", cntT[i][0], cntT[i][1]);
return 0;
}