kokichi_oma @ 2024-09-06 20:20:19
#include<bits/stdc++.h>
using namespace std;
long long x[10086],y[10086],cnt=0;
int main(){
char a;
int w1=0,l1=0,w2=0,l2=0;
while(a!='E'){
cin>>a;
if(a=='W'){
w1++;
w2++;
}
else if(a=='L'){
l1++;
l2++;
}
if(w1==11||l1==11){
cout<<w1<<':'<<l1<<endl;
w1=0;
l1=0;
}
if(w2==21||l2==21){
cnt++;
x[cnt]=w2;
y[cnt]=l2;
w2=0;
l2=0;
}
}
x[cnt+1]=w2;
y[cnt+1]=l2;
cout<<w1<<':'<<l1<<endl;
cout<<endl;
for(int i=1;i<=cnt+1;i++){
cout<<x[i]<<':'<<y[i]<<endl;
}
}
by _Eurydice_ @ 2024-09-06 22:57:25
带了注释,记得看一下,看完可以删了ovo
(感觉东改点西改点就变成我默写自己代码了)
#include<bits/stdc++.h>
using namespace std;
char win[62505];//把答案存下来比较麻烦,直接用win数组存输入的字符串好了 ,另外这题的数组要开25*2500=62500
int n,w,l;//n表示字符串长度,w和l是计数器
int main(){
char a;
while(cin>>a&&a!='E') win[++n]=a;//存字符串
for(int i=1;i<=n;i++){
if(win[i]=='W') w++;//计数,下同
if(win[i]=='L') l++;//用else if没有必要,单个else或者if就可以了
if((w>=11||l>=11)&&(w-l>=2||l-w>=2)){//一局结束的条件是两人中有人分数不低于11(或21),并且比分差不小于2
cout<<w<<':'<<l<<endl;//直接输出
w=0,l=0;
}
}
cout<<w<<':'<<l<<endl<<endl;//还有就是换行符"\n"比endl速度快一点,可以替换一下
w=0,l=0;
for(int i=1;i<=n;i++){//存字符串的好处是第二次的答案可以重新循环一遍计算,不用在第一次循环存,更好懂
if(win[i]=='W') w++;//计数
if(win[i]=='L') l++;
if((w>=21||l>=21)&&(w-l>=2||l-w>=2)){
cout<<w<<':'<<l<<endl;//不用存,直接输出
w=0,l=0;
}
}
cout<<w<<':'<<l;
}
我倒了一辈子霉就是为了能在洛谷上遇到一次弹p,素晴らしい!
by kokichi_oma @ 2024-09-07 20:47:54
谢谢,已关
by zjck2 @ 2024-09-14 21:30:14
@kokichi_oma 分差要大于二哦
by kokichi_oma @ 2024-09-17 23:08:49
@zjck2 知道了,已关啦
by zjck2 @ 2024-09-22 09:40:10
@kokichi_oma 谢谢啦