[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 }