[NOIP2003]乒乓球 - 代码 - 记录 - 坑点较多
重复两次计算,只有分值不同,建议写个函数,传入 11 和 21会更好点。
#include <iostream>
#include <vector>
#include <cstdlib>
using namespace std;
int main() {
char ch;
int x = 0, y = 0, a = 0, b = 0;
vector<pair<int, int>> u, v;
while(cin >> ch) {
if(ch == 'E') {
u.push_back({x, y});
v.push_back({a, b});
break;
}
if(ch == 'W') x++, a++;
else y++, b++;
if((x >= 11 || y >= 11) && abs(x - y) >= 2) {
u.push_back({x, y});
x = y = 0;
}
if((a >= 21 || b >= 21) && abs(a - b) >= 2) {
v.push_back({a, b});
a = b = 0;
}
}
for(auto &e : u) {
cout << e.first << ":" << e.second << endl;
}
cout << endl;
for(auto &e : v) {
cout << e.first << ":" << e.second << endl;
}
return 0;
}
坑点1 : 0 : 0也要输出
坑点2 : 分差 >= 2 才能结束比赛,需要清楚乒乓球规则。
查看1道真题和解析


