题目
算法
(字符串处理,模拟)
O
(
n
)
O(n)
O(n)
先将整个比赛情况读取进来,然后依次枚举在11分制和21分制下的比赛结果即可。
- 在11分制下,一局比赛结束的条件是:某一方达到11分,且分差达到2;
- 在21分制下,一局比赛结束的条件是:某一方达到21分,且分差达到2;
注意最后如果比分是0:0,也要输出。
时间复杂度
每个字符处理一遍,因此时间复杂度是 O ( n ) O(n) O(n)
C++ 代码
#include <iostream>
#include <algorithm>
using namespace std;
void work(string str, int score)
{
int a = 0, b = 0;
for (int i = 0; i < str.size() && str[i] != 'E'; i ++ )
{
if (str[i] == 'W') a ++ ;
else b ++ ;
if (max(a, b) >= score && abs(a - b) >= 2)
{
printf("%d:%d\n", a, b);
a = b = 0;
}
}
printf("%d:%d\n", a, b);
}
int main()
{
string str, s;
while (cin >> s) str += s;
work(str, 11);
puts("");
work(str, 21);
return 0;
}