50分,求调

P1042 [NOIP2003 普及组] 乒乓球

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 谢谢啦


|