【p1042-乒乓球】解题记录

原题点 这里

这道题主要是出题人比较坑……

一场比赛不是有人达到 11 或 21 分就结束,而是某人的分数达到 11 分或 21 分且两人的分数差大于等于 2 分才算结束,也就是说如果 11 分制时若干场比赛后分数为 11:10,那么比赛也不会结束,而是一直比到两人分数差大于等于 2 分才结束。

还有就是如果比赛结束时两人刚好比完某一局,也要再输出 0:0,而不是只在最后一场没比完时输出结果结果。

题目本身两个循环就能完成:

#include 
#include 
using namespace std;

const int maxn= 1000005;

int score[maxn], end=0;

int main(){

    for(char ch= getchar(); ch!='E'; ch=getchar()){
        if(ch=='W'||ch=='L') score[end++]= ch;
    }

    int w=0, l=0, w21=0, l21=0;
    for(int i=0; iif(score[i]=='W') ++w;
        else ++l;
        if((w>=11||l>=11)&&abs(w-l)>=2){
            printf("%d:%d\n", w, l);
            w=0; l=0;
        }

    }
    printf("%d:%d\n", w, l);

    putchar('\n');

    w=0; l=0;
    for(int i=0; iif(score[i]=='W') ++w;
        else ++l;
        if((w>=21||l>=21)&&abs(w-l)>=2){
            printf("%d:%d\n", w, l);
            w=0; l=0;
        }
    }
    printf("%d:%d\n", w, l);

    return 0;
}

你可能感兴趣的:(洛谷题解)