题目链接: https://www.luogu.com.cn/problem/P1042
思路分析
思路很简单,就是把记录放入一个数组中,根据字符来判断是华华的分数+1还是华华对手的分数+1,并且当某一方分数超过了11(21)分(或等于11(21)分)且两者分差≥2时,就输出一局的比赛结果,然后清零,进入下一局进行同样的判断操作。
若某一局没有打完(即前面的输出比赛结束的条件),就已经以“E”结束了,那么就要在前面的循环体结束后继续输出剩余的记录情况。
代码
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
char result[67000],re;
int n=0;
for(int i=0;i<67000;i++){
cin>>re;
if(re=='E') break;
result[n++]=re;
}
int score11=0,score2=0;
int sum1=0,sum2=0;
for(int i=0;i<=n;i++){
if(score11>=11&&score11-score2>=2||score2>=11&&score2-score11>=2){
cout<<score11<<":"<<score2<<endl;
if(score11>score2) sum1++;
else sum2++;
score11=0;score2=0;
}
if(result[i]=='W') score11++;
if(result[i]=='L') score2++;
}
if((score11||score2)||(!sum1&&!sum2)) cout<<score11<<":"<<score2<<endl<<endl;
score11=0;score2=0;
sum1=0;sum2=0;
for(int i=0;i<=n;i++){
if(score11>=21&&score11-score2>=2||score2>=21&&score2-score11>=2){
cout<<score11<<":"<<score2<<endl;
if(score11>score2) sum1++;
else sum2++;
score11=0;score2=0;
}
if(result[i]=='W') score11++;
if(result[i]=='L') score2++;
}
if((score11||score2)||(!sum1&&!sum2)) cout<<score11<<":"<<score2;
return 0;
}
评论(0)