SCP_wiki @ 2024-10-03 16:03:41
#include<bits/stdc++.h>
using namespace std;
char s;
int a[1000001],b[1000001];
int c,d;
int main(){
int t=0;
while(1){
cin>>s;
if(s=='E'){
break;
}else if(s=='W'){
a[t]++;
}else if(s=='L'){
b[t]++;
}
t++;
}
for(int i = 0;i<t;i++){
if(a[i]!=0){
c++;
}else{
d++;
}
if(c>=11){
cout<<c<<':'<<d<<endl;
c=0;
d=0;
}else if(d>=11){
cout<<c<<':'<<d<<endl;
c=0;
d=0;
}
}
if(c!=0&&d!=0){
cout<<c<<':'<<d<<endl;
}
c=0;
d=0;
cout<<endl;
for(int i = 0;i<t;i++){
if(a[i]!=0){
c++;
}else{
d++;
}
if(c>=21){
cout<<c<<':'<<d<<endl;
c=0;
d=0;
}else if(d>=21){
cout<<c<<':'<<d<<endl;
c=0;
d=0;
}
}
if(c!=0&&d!=0){
cout<<c<<':'<<d<<endl;
}
c=0;
d=0;
return 0;
}
by XURUIFAN @ 2024-10-03 16:17:31
有没有一种可能,第一次for中你的c在d>11后被刷新了,但是后面仍有a[i]!=0,并且后面所有的b[i]均为0,并且在循环结束时c是小于11的。那这种情况下,你应该输出一个c:0然后进行21分制对吧,但是你的第一次循环结束后,判断条件用的是&&,此时d为0,不符合条件所以没输出,然后你直接给人全刷新了。
找不到重点不会加粗,见谅
轻喷
by XURUIFAN @ 2024-10-03 16:20:45
@XURUIFAN 这个似乎不是全部的问题,改后记录是30分
但是确实是问题
by XURUIFAN @ 2024-10-03 16:23:39
你的思路和题解第一篇相似,可以对照一下
by lx01220122 @ 2024-10-03 21:43:48
0:0也要输出