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