lyb_qhd @ 2024-10-07 17:44:21
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#define up(i,l,r) for(ll i=l;i<=r;i++)
#define clr(a) memset(a,0,sizeof(a))
bool ar[90000];
ll n=0;
void input() {
char x;
while(cin>>x) {//auto skip \n
if (x=='W') ar[++n]=1;
if (x=='L') ar[++n]=0;
if (x=='E') break;
}
}
void work(ll step) {
ll w,l,c,flag=0;
w=l=c=0;
up(i,1,n) {
if (c==step)
flag=1,
printf("%d:%d\n",w,l),
w=l=c=0;
if (ar[i]) w++;
else l++;
c++;
}
if (c||!flag) printf("%d:%d\n",w,l);
}
int main() {
clr(ar);
input();
work(11);
cout<<endl;
work(21);
return 0;
}
by linshangyun @ 2024-10-09 21:16:39
你的 work 函数要改一下,if 的条件不是 c==step。你可以想一下,在现实中并不是一局就打11个球(或21个)而是当有人打到11个球时结束。所以不能用 c 来记录次数。 另外题目中说直到分差大于或者等于2,才一局结束。
by linshangyun @ 2024-10-09 21:26:27
可以用c记录次数,但不能用来判断一局是否结束