40pts,help me!

P1042 [NOIP2003 普及组] 乒乓球

tongtong2012 @ 2024-06-09 19:55:15

玄关!!!

#include<bits/stdc++.h>
using namespace std;
string s,t;
int main(){
    int l;
    while(cin>>t){
        s+=t,l=s.length();
        if(s[l-1]=='E'){
            l--;
            break;
        }
    }
    int a=0,b=0;
    for(int i=0;i<l;i++){
        if(s[i]=='W')a++;
        else b++;
        if((a==11||b==11)&&abs(a-b)>1){
            cout<<a<<':'<<b<<'\n';
            a=0,b=0;
        }
    }
    if(a!=0||b!=0)cout<<a<<':'<<b<<'\n'; 
    cout<<'\n';
    a=0,b=0;
    for(int i=0;i<l;i++){
        if(s[i]=='W')a++;
        else b++;
        if((a==21||b==21)&&abs(a-b)>1){
            cout<<a<<':'<<b<<'\n';
            a=0,b=0;
        }
    }
    if(a!=0||b!=0)cout<<a<<':'<<b<<'\n'; 
    return 0;
}

by QBW1117 @ 2024-06-09 20:09:40

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

by QBW1117 @ 2024-06-09 20:11:20

解释一下

把 ==11 和==21 改成>= 因为题目说的是大于等于11且分差大于等于二

其次那个输入部分写复杂了,完全没必要,见循环部分,特判一下就可以了,

还有a!=0 || b!=0也可以删去


by QBW1117 @ 2024-06-09 20:12:46

@tongtong2012

不要脸的求个关


by tongtong2012 @ 2024-06-09 20:13:00

@QBW1117 谢谢dalao,已关


by tongtong2012 @ 2024-06-09 20:14:57

@QBW1117 不过如果把特判删了,不会输出超限吗?求dalao再详细解释一下


by tongtong2012 @ 2024-06-09 20:16:15

@QBW1117 现在是80pts


by QBW1117 @ 2024-06-09 20:18:46

@tongtong2012

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

这份代码100,here


by tongtong2012 @ 2024-06-09 20:21:04

@QBW1117 再送2关


by QBW1117 @ 2024-06-09 20:23:18

不好意思,

记录


|