洛谷P1042 [NOIP2003 普及组] 乒乓球

题目链接:https://www.luogu.com.cn/problem/P1042

一道基础的模拟题;

大体思路是对整个过程进行模拟,分11分制和21分制,然后分别输出内容即可;

注意事项:乒乓球赢的条件是有一方的得分大于规定分数并且双方的比分差距大于等于2;

此外,在输出结尾的时候注意打两个换行符号,以满足题目要求。

AC代码及相关内容注释如下:

#include<bits/stdc++.h>
using namespace std;
char ch;
int a[62510];//用来判别是否是甲得分还是乙得分 
int count1,count2;//记录二人的分数 
int main()
{
    for(int i=0;cin>>ch&&ch!='E';i++)//输入E停止 
    {
        if(ch=='W')
        {
            a[i]=1;//规定a[i]=1是甲得分 
        }else if(ch=='L')
        {
            a[i]=-1;//乙得分 
        }else
        {
            a[i]=0;//输入其他的标为0,以作结束处理 
        }
    }
    for(int i=0;;i++)//11分制 
    {
        if(a[i]==1)
        count1++;//甲得1分 
        else if(a[i]==-1)
        {
            count2++; //乙得1分 
        }
        if((count1>=11||count2>=11)&&abs(count1-count2)>=2)//满足赢得条件 
        {
            printf("%d:%d\n",count1,count2);//输出当前比分 
            count1=0;//进行下一局的操作,得分归零 
            count2=0;
        }
        if(a[i]==0)//输入E结束,输出当前比分 
        {
            printf("%d:%d\n\n",count1,count2);//两个换行操作哦 
            break;//不要忘记break; 
        }
     } 
     count1=0;//得分归零,进行21分制比赛 
     count2=0;
     for(int i=0;;i++)//21分制,具体操作如上 
    {
        if(a[i]==1)
        count1++;
        else if(a[i]==-1)
        {
            count2++; 
        }
        if((count1>=21||count2>=21)&&abs(count1-count2)>=2)
        {
            printf("%d:%d\n",count1,count2);
            count1=0;
            count2=0;
        }
        if(a[i]==0)
        {
            printf("%d:%d\n\n",count1,count2);
            break;
        }
     } 
    return 0;
 } 

 

posted @ 2022-02-11 14:10  江上舟摇  阅读(201)  评论(0编辑  收藏  举报