50分求调 玄关

P1042 [NOIP2003 普及组] 乒乓球

yjjh @ 2024-07-13 09:12:24

#include<bits/stdc++.h>
using namespace std;
int main(){
    string str="";
    char c;
    while(cin >>c){
        if(c=='E')break;
        str+=c;
    }
    int a=0,b=0;
    for(int i=0;i<str.size();i++){
        if(str[i]=='W')a++;
        else b++;
        if(a==11||b==11){
            cout <<a<<':'<<b<<endl;
            a=0,b=0;
        }
    }
    //if(a!=0||b!=0){
        cout <<a<<':'<<b;
        a=0,b=0;
    //}
    cout <<endl<<endl;
    for(int i=0;i<str.size();i++){
        if(str[i]=='W')a++;
        else b++;
        if(a==21||b==21){
            cout <<a<<':'<<b<<endl;
            a=0,b=0;
        }
    }
    //if(a!=0||b!=0){
        cout <<a<<':'<<b;
        a=0,b=0;
    //}
    return 0;
}

by osu_rice222 @ 2024-07-13 10:06:34

判断比赛胜负的条件写的不严谨,遇到一些刁钻的点会wa,下面是ac代码 :

#include <bits/stdc++.h>
using namespace std;
string s,t;
int main(){
    while(cin>>t){
        s+=t;
    }
    int w=0,l=0;
    for(int i=0;i<s.size();i++){
        if(s[i]=='W'){
            w++;
        }
        if(s[i]=='L'){
            l++;
        }
        if((w>=11||l>=11)&&(w-l>=2||l-w>=2)){
            cout<<w<<":"<<l<<'\n';
            w=0,l=0;
        }
        if(s[i]=='E'){
            cout<<w<<":"<<l<<'\n';
            w=0,l=0;
            break;
        }
    }
    cout<<'\n';
    for(int i=0;i<s.size();i++){
        if(s[i]=='W'){
            w++;
        }
        if(s[i]=='L'){
            l++;
        }
        if((w>=21||l>=21)&&(w-l>=2||l-w>=2)){
            cout<<w<<":"<<l<<endl;
            w=0,l=0;
        }
        if(s[i]=='E'){
            cout<<w<<":"<<l;
            w=0,l=0;
            break;
        }
    }
    return 0;
}

(我知道你只看这里HAHA) 来自蒟蒻的调


|