当前位置 博文首页 > ApocalypseTq的博客:P1042 [NOIP2003 普及组] 乒乓球 题解

    ApocalypseTq的博客:P1042 [NOIP2003 普及组] 乒乓球 题解

    作者:[db:作者] 时间:2021-09-23 15:39

    _这个题其实还是需要一点乒乓球比赛的尝常识:当一方比分率先达到11分(或21分)时,只有分差大于或等于2分才会开始下一局。_

    细节处理:读到“E”时退出while,并输出当时比分;两组数据中间要把比分归零。

    #include<iostream>
    using namespace std;
    char ch;
    bool g[1000000];//记录比分,true表示华华胜,false表示输; 
    long long a,b,num;//a,b存储比分; 
    int main()
    {
        while(1)
        {
            ch=getchar();//一个字符一个字符读入; 
            if(ch=='E')
            {
                cout<<a<<":"<<b<<endl;//输出当前比分; 
                break;
            }
            if(ch=='W')
            {
                a++;num++;g[num]=true;//存到数组中,以便算21分制时再模拟一次; 
            }
            if(ch=='L')
            {
                b++;num++;
            }
            if(a>=11&&a-b>=2)
            {
                cout<<a<<":"<<b<<endl;
                a=0;b=0;
            }
            if(b>=11&&b-a>=2)
            {
                cout<<a<<":"<<b<<endl;
                a=0;b=0;
            }
        }
        a=0;b=0;cout<<endl;//归零; 
        for(int i=1;i<=num;i++)//过程与之前类似; 
        {
            if(g[i]) a++;
            else b++;
            if(a>=21&&a-b>=2)
            {
                cout<<a<<":"<<b<<endl;
                a=0;b=0;
            }
            if(b>=21&&b-a>=2)
            {
                cout<<a<<":"<<b<<endl;
                a=0;b=0;
            }
        }
        cout<<a<<":"<<b<<endl;//输出最后一局比分; 
        return 0;
    }
    cs
    下一篇:没有了