ScreamingWheat @ 2024-11-05 22:34:26
str1=input()
hua11 = [0, 0] # 1111分制的比分
hua21 = [0, 0] # 2121分制的比分
l1 = [] # 1111分制的比分列表
l2 = [] # 2121分制的比分列表
for i in str1:
if i == 'W':
hua11[0] += 1
hua21[0] += 1
elif i == 'L':
hua11[1] += 1
hua21[1] += 1
elif i == 'E':
break
# 检查1111分制是否结束一局
if (hua11[0] >= 11 and hua11[0] - hua11[1] >= 2) or (hua11[1] >= 11 and hua11[1] - hua11[0] >= 2):
l1.append(hua11) # 添加当前比分并重置
hua11 = [0, 0]
# 检查2121分制是否结束一局
if (hua21[0] >= 21 and hua21[0] - hua21[1] >= 2) or (hua21[1] >= 21 and hua21[1] - hua21[0] >= 2):
l2.append(hua21) # 添加当前比分并重置
hua21 = [0, 0]
# 添加最后一局的比分(如果比赛没有结束)
if hua11 != [0, 0]:
l1.append(list(hua11))
if hua21 != [0, 0]:
l2.append(list(hua21))
# 将比分列表转换为字符串
str11 = "\n".join([f"{score[0]}:{score[1]}" for score in l1])
str21 = "\n".join([f"{score[0]}:{score[1]}" for score in l2])
print(str11 + "\n\n" + str21)
by ScreamingWheat @ 2024-11-05 22:35:36
新手小白一枚,输入了测试例子和其他几个例子,IDLE里边都能正确跑出来
by AK47N @ 2024-11-17 13:24:38
qp
by AK47N @ 2024-11-17 13:25:40
@ScreamingWheat 点关注
#include <iostream>
#include <cstring>
using namespace std;
int win[62503];
int w,l;
int main()
{
char s;
for(int i=1;cin>>s&&s!='E';i++)//循环读入,当读到字符E结束
{
if(s=='W')win[i]=1;
else win[i]=2;
}
//----------------11分制 ----------------
for(int i=1;1;i++)
{
if(win[i]==1)w++;//胜场+1
if(win[i]==2)l++;//负场+1
if(win[i]==0)//读到0则记录结束,输出记录结束前的分数。
{
cout<<w<<":"<<l<<endl<<endl;
break;
}
if(w-l>=2||l-w>=2)
if(w>=11||l>=11)//当双方比分相差大于2且一方分数大等于11输出
{
cout<<w<<":"<<l<<endl;
w=0;//比分清零
l=0;
}
}
w=0;//清零,为21分制计算做准备
l=0;
//----------------21分制 ----------------
for(int i=1;1;i++)//一切同上,唯一区别就是判定从11变为21
{
if(win[i]==1)w++;
if(win[i]==2)l++;
if(win[i]==0)
{
cout<<w<<":"<<l;
break;
}
if(w-l>=2||l-w>=2)
if(w>=21||l>=21)//11变为21
{
cout<<w<<":"<<l<<endl;
w=0;
l=0;
}
}
return 0;//华丽地结束 ㄟ(▔▽▔)ㄏ
}