- lizexuan's blog
【03NOIP普及组】乒乓球
- 2023-8-17 16:55:44 @
题目:
题目解析
看注释
代码
#include <bits/stdc++.h>
using namespace std;
char c;
int record[62530], idx;
// 数组要存下所有字符才行
int w, l, fs[2] = {11, 21};
// 得分已经两个赛制的分值
int main() {
while (true) {
c = cin.get();
if (c == 'E') {
break;
} // 如果读取到结束符'E'结束
if(c == 'W'){
record[idx++] = 0;
// 上述代码相当于
/*
record[idx] = 0;
idx++;
*/
} else if (c == 'L'){
record[idx++] = 1;
} 同上
}
for (int i = 0; i <= 1; i++) { // 重复两种赛制
for (int j = 0; j < idx; j++) { // 遍历
if (record[j] == 0) {
w++;
}
if (record[j] == 1) {
l++;
}
if (abs(w - l) >= 2) { // 如果两人分数差值不超过2
if (w >= fs[i] || l >= fs[i]) { // 如果两人都超过了此赛制的分数
printf("%d:%d\n", w, l); // 输出
w = l = 0; // 制零
}
}
}
printf("%d:%d\n\n", w, l); // 不管比赛有无结束都要输出
w = l = 0; // 制零!
}
return 0;
}