[2003年NOIP普及组] 乒乓球

[2003年NOIP普及组] 乒乓球

思路:将两人比赛成绩分别同时计分,满足比赛规则就记录,依次输出。

分析:在比赛中,当双方比分都大于等于10的情况下要连续赢两球,才算赢。

注意:比完了第一场,下一场还没开始,那也要输出0:0

代码如下:

 1 #include<cstdio>
 2 
 3 #include<iostream>
 4 
 5 using namespace std;
 6 
 7 int main()
 8 
 9 {
10 
11    int sa[10005]={0},sb[10005]={0};//11赛制
12 
13    int ka[10005]={0},kb[10005]={0};//21赛制
14 
15    char ch;//要输入的字符
16 
17    int t1=1,t2=1//分别记录不同赛制的不同回合
18 
19 int sa1=0,sb1=0,sa2=0,sb2=0;//不同赛制a,b两人的分数(计数器)
20 
21    int first=0;//标记,用于处理一开始是E的情况
22 
23    while(cin>>ch)
24 
25   {
26 
27     if(ch=='E')//到E为止
28 
29     {
30 
31       if(first==0)
32 
33         {cout<<"0:0"<<endl<<endl<<"0:0";return 0;}
34 
35       sa[t1]=sa1;sb[t1]=sb1;
36 
37       ka[t2]=sa2;kb[t2]=sb2;
38 
39       t1++;t2++;
40 
41       break;
42 
43     }
44 
45     first++;
46 
47     if(ch=='W') {sa1++;sa2++;}//同时计数
48 
49     if(ch=='L') {sb1++;sb2++;}
50 
51     if(sa1>=11&&sa1-sb1>=2||sb1>=11&&sb1-sa1>=2)
52 
53       {sa[t1]=sa1;sb[t1]=sb1;t1++;sa1=0;sb1=0;}
54 
55     if(sa2>=21&&sa2-sb2>=2||sb2>=21&&sb2-sa2>=2)
56 
57      {ka[t2]=sa2;kb[t2]=sb2;t2++;sa2=0;sb2=0;}
58 
59   }
60 
61    for(int i =1; i<t1 ; i++)
62 
63      cout<<sa[i]<<":"<<sb[i]<<endl;
64 
65    cout<<endl;
66 
67    for(int i=1;i<t2;i++)
68 
69      cout<<ka[i]<<":"<<kb[i]<<endl;
70 
71     return 0;
72 
73 }

 

posted @ 2022-08-12 08:00  shanyingrui  阅读(274)  评论(0编辑  收藏  举报