赏关

P1042 [NOIP2003 普及组] 乒乓球

zyx_dzpd @ 2024-08-30 21:58:39

我感觉没错。。。

#include<bits/stdc++.h>
//#define    //不加";"
using namespace std;

int a[25*2500+100],n,i,j,f[2]={11,21};

int main()
{
    char s;
    while(1){
        cin>>s;
        if(s=='E') break;
        else if(s=='W') a[n++]=1;
        else if(s=='L') a[n++]=0;
    }
    for(j=0;j<2;j++){
        int w=0,l=0;
        for(i=0;i<n;i++){
            w+=a[i];
            l+=l-a[i];
            if((max(w,l)>=f[j])&&abs(w-1)>=2){
                cout<<w<<": "<<l<<"\n";
                w=l=0;
            }
        }
        cout<<w<<":"<<l<<"\n\n"; 
    }
    return 0;
}

提示:改个代码吧,求求了


by manis @ 2024-08-31 14:56:18

@zyx_dzpd 你的1与L混用了


by manis @ 2024-08-31 15:05:50

在编译器里很明显可以看到,第20行的 L+=L-a[i];
应是L+=1-a[i];
第21行的abs(w-1)>=2
应是abs(w-L)>=2
(为了看清,均用大写L)


by manis @ 2024-08-31 15:08:42

你的代码我改好了:

#include<bits/stdc++.h>
//#define    //不加";"
using namespace std;

int a[25*2500+100],n,i,j,f[2]={11,21};

int main()
{
    char s;
    while(1){
        cin>>s;
        if(s=='E') break;
        else if(s=='W') a[n++]=1;
        else if(s=='L') a[n++]=0;
    }
    for(j=0;j<2;j++){
        int w=0,l=0;
        for(i=0;i<n;i++){
            w+=a[i];
            l+=1-a[i];
            if((max(w,l)>=f[j])&&abs(w-l)>=2){
                cout<<w<<": "<<l<<"\n";
                w=l=0;
            }
        }
        cout<<w<<":"<<l<<"\n\n"; 
    }
    return 0;
}

by zyx_dzpd @ 2024-08-31 20:30:28

谢,已关


|