其他分享
首页 > 其他分享> > P1042 [NOIP2003 普及组] 乒乓球 题解

P1042 [NOIP2003 普及组] 乒乓球 题解

作者:互联网

_这个题其实还是需要一点乒乓球比赛的尝常识:当一方比分率先达到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;
}

标签:11,ch,cout,NOIP2003,题解,P1042,&&,比分,21
来源: https://blog.csdn.net/aqbwewd/article/details/120364965