umirin @ 2024-12-03 21:47:15
代码如下
#include<bits/stdc++.h>
using namespace std;
int hh=0,hl=0,i=1;
char a='W',ast[62510];
int main(){
while(a=='W'||a=='L'){
cin>>a;
ast[i]=a;
i++;
if(a=='W'){
hh++;
}
if(a=='L'){
hl++;
}
if((hh>=11&&hh-hl>=2)||(hl>=11&&hl-hh>=2)){
cout<<hh<<":"<<hl<<endl;
hh=0;
hl=0;
}
}
cout<<hh<<":"<<hl<<endl<<endl;
hh=0;
hl=0;
for(int j=1;j<=i;j++){
if(ast[j]=='W'){
hh++;
}
if(ast[j]=='L'){
hl++;
}
if(ast[j]=='E'){
break;
}
if(hh==21||hl==21){
cout<<hh<<":"<<hl<<endl;
hh=0;
hl=0;
}
}
cout<<hh<<":"<<hl<<endl;
return 0;
}
by WLOG404 @ 2024-12-04 23:08:46
if((hh>=11&&hh-hl>=2)||(hl>=11&&hl-hh>=2)){
cout<<hh<<":"<<hl<<endl;
hh=0;
hl=0;
}
有疏漏,如果11:10也是一局结束了
参考如下:
if((hh==11 && hl<10)||(hl==11 && hh<10)||(hh>11 && hl==hh-2)||(hl>11 && hh==hl-2)){
cout<<hh<<":"<<hl<<endl;
hh=hl=0;
}
by Pectics @ 2024-12-05 19:59:56
@WLOG404
为什么? \ 11:10 \ (true&&false)||(false&&false) // false \ 没有结束啊
by WLOG404 @ 2024-12-05 23:11:01
不好意思,昨天晚上我太困了看错了
你的判断没有问题,是输入的问题
输入字符是默认以空格或者换行分开的,你可以这样输入:
string st="",game;
while(cin>>game)
for(i=0;i<game.length();i++)
if(game[i]=='E')goto Halt;
else st+=game[i];
Halt:
for(i=0;i<st.length();i++){
//……后面就是判断比赛是否结束
by WLOG404 @ 2024-12-05 23:11:46
因为考虑到E后面可能还有其他乱七八糟的输入
by umirin @ 2024-12-09 18:16:44
@WLOG404 好的好的,明白
by umirin @ 2024-12-11 19:10:30
已AC,错误并非未判断输入,而是没有关于21分制下获胜方得分大于21的判断。