题解

380 条题解

  • 26
    @ 2017-04-15 15:21:58
    #include<iostream>
    #include<cmath>
    using namespace std;
    
    char letter[100000];
    void Output(int cap,int type) {
        int w = 0, l = 0;
        for (int i = 0; i < cap; i++) {
            if (letter[i] == 'W')
                w++;
            if (letter[i] == 'L')
                l++;
            if (((w == type||l==type)&&(abs(l-w)>=2))||((w>type||l>type)&&(abs(l-w)==2)) ){
                cout << w << ':' << l;
                w = 0, l = 0;
                cout << endl;
            }
        }
        cout << w << ':' << l;
    }
    int main() {
        int i = 0;
        while ((letter[i] = getchar()) != EOF) {
            if (letter[i] == 'E')
                break;
            i++;
        }
        Output(i, 11);
        cout << endl<<endl;
        Output(i, 21);
    
        return 0;
    }
    
  • 18
    @ 2017-03-01 16:39:38

    题目很简单,细节要考虑周到:
    1.第一个点直接读入了一个‘E’;
    2.最后一个点是在一次完整的计分并输出后————即此时比分为0:0,那么就要输出‘0:0’(题目中有提示;
    3.刚刚上面有个括号补全;
    4.为什么我按一下enter它自动给我加了一个‘4.’;
    5.这个网站好强啊!
    6.代码反正也没人读就不贴了!

    • @ 2017-05-18 10:39:51

      代码有人看啊,像我一样的新手不懂了就一个一个看过来的……

    • @ 2018-04-30 11:15:47

      @子化: 有人看啊,菜鸟在看,希望注释详细点

  • 5
    @ 2021-04-21 19:24:45

    作为模拟的话乒乓球真是个很棒的题
    这题我在2018年夏令营上机的时候见到过

    由于当时上的D班,本人太蔡了,所以看了看题目就放弃了=w=

    现在回首当年冬令营,自己应该能做出来的,只不过畏难心理搞的鬼,看旁边的大佬 都在抠所以就没敢做...

    这个故事告诉我:在编程生涯中,不要有畏难心理,实际上很多题目只要用心去理解,去转化题意,就会发现并不是你想象中的那么难。更不要在考试中东张西望看别的大佬做不做的出来,一定要自己尝试哦=w=(相信自己,哦哦哦哦哦)

    哎呀呀跑题了

    上面几段可以不看=w=都是废话
    但是实际上这题并不是很难(虽然我刚刚AC就来写题解了),细节可能有很多,但是没卡到我太多awa。

    那么接下来开讲啦!
    首先,这个输入就是一个坑(至少对我这样的蒟蒻来说是个坑)
    题目是这么说的:

    “每个输入文件包含若干行字符串,字符串有大写的W、L和E组成。其中E表示比赛信息结束,程序应该忽略E之后的所有内容。”

    划重点:若干行字符串

    其实这里我就被坑到了TAT

    相信很多小伙伴和我一样,看到输入数据以为就是一个字符串解决...

    刚刚还想用字符串偷懒的我懵了...那么只能用字符数组来解决了吖=w=

    输入就是这么输的:

    #include<bits/stdc++.h>
    using namespace std;
    char ch,s[62510]//至于为什么是62510看说明提示;
    int a,b,emm//emm表示分数总数量(同时也是下标)a,b下文会讲;
    int main(){
        while(cin>>ch){//一直输入
            if(ch=='E')break;//如果是E就结束(防止E不是最后一个字符这一情况发生)
            else s[++emm]=ch;//存入字符数组中
        }
        //awa
    } 
    

    另外说明一下,测试数据里E不一定是最后一个输入的字符,如果不判断,把E后面的数也存进去就炸了哟~

    接下来就是**核心部分**啦!
    核心部分坑更多,在此就不一一列举了=w=

    但是要说一下本题的最坑的就是比分一定要直到分差大于或者等于2(在不小于11或21的情况下)。。。

    那么为此,我写了两个判断语句(先以11分制为例):

    if(a==11&&a>b&&a-b>=2||b==11&&b>a&&b-a>=2)
    

    这个是判断11分就赢的情况。a和b就是这个谁和那个谁的当局得分(下局清零的)

    if(a>=11&&a>b&&a-b>=2||b>=11&&b>a&&b-a>=2)
    

    这个嘛,就是判断高分超过11的情况啦=w=(是不是没有想象中那么复杂)

    21分赛制就把判断语句中的11改成21就可以了吖

    完整代码如下:

    #include<bits/stdc++.h>
    using namespace std;
    char ch,s[62510];
    int a,b,emm;
    int main(){
        while(cin>>ch){
            if(ch=='E')break;
            else s[++emm]=ch;
        }
        for(int i=1;i<=emm;i++){
            if(s[i]=='W')a++;
            else if(s[i]=='L')b++;
            if(a==11&&a>b&&a-b>=2||b==11&&b>a&&b-a>=2){
                cout<<a<<":"<<b<<endl;
                a=0;
                b=0;
            }
            else if(a>=11&&a>b&&a-b>=2||b>=11&&b>a&&b-a>=2){
                cout<<a<<":"<<b<<endl;
                a=0;
                b=0;
            }
        }
        cout<<a<<":"<<b<<endl<<endl;
        a=0;
        b=0;
        for(int i=1;i<=emm;i++){
            if(s[i]=='W')a++;
            else if(s[i]=='L')b++;
            if(a==21&&a>b&&a-b>=2||b==21&&b>a&&b-a>2){
                cout<<a<<":"<<b<<endl;
                a=0;
                b=0;
            }
            else if(a>=21&&a>b&&a-b>=2||b>=21&&b>a&&b-a>=2){
                cout<<a<<":"<<b<<endl;
                a=0;
                b=0;
            }
        }
        cout<<a<<":"<<b<<endl;
        return 0;
    } 
    然后就愉快地AC啦!
    

    当然有小伙伴哪些细节不懂的欢迎来私信我哦~

    (vijos就没有比我蔡的这么说岂不是找打)

    我是麒麟吃稀饭
    ,如果你能看到这篇题解的话,那么它就是我的第二篇题解啦!

    喜欢的话别忘了顶一下哟,也欢迎你的点赞,评论,关注,素质三连(我一个蒟蒻写题解也不容易啊)

    谢谢观看!

    • @ 2022-10-04 09:34:42

      if ((a >= 11 || b >= 11) &&( (a - b| b - a) >= 2));
      判断可以这样一步到位吗?纯新手,问题太大的话,请见谅。

  • 4
    @ 2018-02-09 21:15:42

    看了好久都没java的,来一波java版本的,要注意是若干行!

    import java.util.Scanner;
    //交叉模拟  把比赛的情况模拟出来 
    public class Main {
    
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            StringBuilder sb = new StringBuilder();
            String res, string;
            while(true) {
                string = in.nextLine();
                if (string.contains("E")) {
                    sb.append(string);
                    break;
                }
                sb.append(string);
            }
            res = sb.toString();
            in.close();
            char[] ch = new char[res.length()];
            ch = res.toCharArray();
            getPoints(ch, 11);
            System.out.println();
            getPoints(ch, 21);
        }
        private static void getPoints(char[] record, int point) {
            int me = 0;
            int you = 0;
            for (int i = 0; i < record.length; i ++) {
                if (record[i] == 'E') {
                    System.out.println(me + ":" + you);
                    break;
                }
                if (record[i] == 'W') {
                    me ++;
                }
                if (record[i] == 'L') {
                    you ++;
                }
                if (me >= point || you >= point) {
                    if (Math.abs(me - you) >= 2) {
                        System.out.println(me + ":" + you);
                        me = 0;
                        you = 0;
                    }
                }
            }
        }
    }
    
  • 4
    @ 2017-02-26 21:34:32

    #include <stdio.h>
    #include <math.h>
    char s[100000];
    int main()
    {
    int i = 0,j,a=0,b=0;

    do{
    scanf("%c",&s[i]);
    }while(s[i++]!='E');

    for(j=0;j<i-1;j++)
    {
    if(s[j]=='W')
    a++;
    if(s[j]=='L')
    b++;
    if(s[j]=='\n')
    continue;
    if((a==11||b==11)&&abs(a-b)>=2)
    {
    printf("%d:%d\n",a,b);
    a=0;
    b=0;
    }
    if(a>=10&&b>=10)
    {
    while(abs(a-b)>=2)
    {
    printf("%d:%d\n",a,b);
    a=0;
    b=0;
    }
    }
    }
    printf("%d:%d\n",a,b);
    a=0;
    b=0;

    printf("\n");

    for(j=0;j<i-1;j++)
    {
    if(s[j]=='W')
    a++;
    if(s[j]=='L')
    b++;
    if(s[j]=='\n')
    continue;
    if((a==21||b==21)&&abs(a-b)>=2)
    {
    printf("%d:%d\n",a,b);
    a=0;
    b=0;
    }
    if(a>=20&&b>=20)
    {
    while(abs(a-b)>=2)
    {
    printf("%d:%d\n",a,b);
    a=0;
    b=0;
    }
    }
    }
    printf("%d:%d",a,b);
    return 0;
    }

    • @ 2017-02-26 21:35:45

      为什么这里数组要设置成100000才能通过测评

      我一开始100就不行

    • @ 2018-02-15 17:04:47

      @miaojie4321: 数组空间太少 容易出错

  • 2
    @ 2019-05-26 17:41:15
    #include<iostream>
    #include<cstdlib>
    #include<string>
    using namespace std;
    int main()
    {
        string s1,s2;//方便输入
        while(getline(cin,s2))s1+=s2;//输入字符串
        int i=0,a=0,b=0;//i是指针,a统计了赢的次数,b是输的次数
        while(s1[i]!='E')//只要不是结束符,现在是判断11分制
        {
            switch(s1[i])//switch判断s1[i]
            {
                case 'W':a++;break;//如果s1[i]是‘W’,累计到a里
                case 'L':b++;break;//如果s1[i]是‘E’,累计到b里
            }
            if((a>=11||b>=11)&&(abs(a-b)>=2))//是否到达条件,一盘有没有结束
            {
                cout<<a<<":"<<b<<endl;//输出
                a=0;b=0;//清零,下一盘
            }
            i++;//下一个字符
        }
        cout<<a<<":"<<b<<endl;//剩下的也要输完
        cout<<endl;//换行隔开
        a=b=0;i=0;//清零,换了一个分制
        while(s1[i]!='E')//同理
        {
            switch(s1[i])
            {
                case 'W':a++;break;
                case 'L':b++;break;
            }
            if((a>=21||b>=21)&&(abs(a-b)>=2))
            {
                cout<<a<<":"<<b<<endl;
                a=0;b=0;
            }
            i++;
        }
        cout<<a<<":"<<b<<endl;
        return 0;
    }
    
  • 1
    @ 2021-10-16 12:40:51

    C++暴力枚举法
    (还好char设置够了)

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    char a[100000];
    
    int main()
    {
        int me = 0,you = 0,temp = 0;
        while(true)
        {
            temp++;
            cin >> a[temp];
            if(a[temp] == 'W')
            {
                me++;
            }
            else if(a[temp] == 'L')
            {
                you++;
            }
            if((me == 11||you == 11) && abs(me - you) >= 2)
            {
                cout << me << ":" << you << endl;
                me = 0;you = 0;
            }
            else if((me >= 11 || you >= 11) && abs(me - you) == 2)
            {
                cout << me << ":" << you << endl;
                me = 0;you = 0;
            }
            if(a[temp] == 'E')
            {
                cout << me << ":" << you << endl << endl;
                me = 0;you = 0;temp = 0;
                break;
            }
        }
        while(true)
        {
            temp++;
            if(a[temp] == 'W')
            {
                me++;
            }
            else if(a[temp] == 'L')
            {
                you++;
            }
            if((me == 21||you == 21) && abs(me - you) >= 2)
            {
                cout << me << ":" << you << endl;
                me = 0;you = 0;
            }
            else if((me >= 21 || you >= 21) && abs(me - you) == 2)
            {
                cout << me << ":" << you << endl;
                me = 0;you = 0;
            }
            if(a[temp] == 'E')
            {
                cout << me << ":" << you << endl;
                me = 0;you = 0;temp = 0;
                break;
            }
        }
        return 0;
    }
    

    快乐

  • 1
    @ 2021-08-29 16:49:37
    #include <bits/stdc++.h>
    using namespace std;
    
    char ch,s[62510];
    int a,b,emm;
    int main(){
        while(cin>>ch){
            if(ch=='E')break;
            else s[++emm]=ch;
        }
        for(int i=1;i<=emm;i++){
            if(s[i]=='W')a++;
            else if(s[i]=='L')b++;
            if(a==11&&a>b&&a-b>=2||b==11&&b>a&&b-a>=2){
                cout<<a<<":"<<b<<endl;
                a=0;
                b=0;
            }
            else if(a>=11&&a>b&&a-b>=2||b>=11&&b>a&&b-a>=2){
                cout<<a<<":"<<b<<endl;
                a=0;
                b=0;
            }
        }
        cout<<a<<":"<<b<<endl<<endl;
        a=0;
        b=0;
        for(int i=1;i<=emm;i++){
            if(s[i]=='W')a++;
            else if(s[i]=='L')b++;
            if(a==21&&a>b&&a-b>=2||b==21&&b>a&&b-a>2){
                cout<<a<<":"<<b<<endl;
                a=0;
                b=0;
            }
            else if(a>=21&&a>b&&a-b>=2||b>=21&&b>a&&b-a>=2){
                cout<<a<<":"<<b<<endl;
                a=0;
                b=0;
            }
        }
        cout<<a<<":"<<b<<endl;
        return 0;
    } 
    
  • 1
    @ 2017-10-08 10:26:56

    这一题真强,题目不难,坑点太多。
    下面给一个代码,缩进我是调好的,如果错了就不要怪我

    #include <cstdio>
    char a[1000005];
    int main(){
        char c;
        c=getchar();
        int len=0;
        while(c!='E'&&c!=EOF){
            if(c=='W'||c=='L'){
                a[++len]=c;
            }
            c=getchar();
        }
        int awin=0,bwin=0;
        for(int i=1;i<=len;i++){
            if(a[i]=='W'){
                awin++;
                if(awin>=11&&awin-bwin>=2){
                    printf("%d:%d\n",awin,bwin);
                    awin=0,bwin=0;
                }
            }
            if(a[i]=='L'){
                bwin++;
                if(bwin>=11&&bwin-awin>=2){
                    printf("%d:%d\n",awin,bwin);
                    awin=0,bwin=0;
                }
            }
        }
        printf("%d:%d\n",awin,bwin);
        awin=bwin=0;
        puts("");
        for(int i=1;i<=len;i++){
            if(a[i]=='W'){
                awin++;
                if(awin>=21&&awin-bwin>=2){
                    printf("%d:%d\n",awin,bwin);
                    awin=0,bwin=0;
                }
            }
            if(a[i]=='L'){
                bwin++;
                if(bwin>=21&&bwin-awin>=2){
                    printf("%d:%d\n",awin,bwin);
                    awin=0,bwin=0;
                }
            }
        }
        printf("%d:%d\n",awin,bwin);
        awin=bwin=0;
        return 0;
    }
    
    
  • 0
    @ 2024-12-03 20:37:10

    #include<iostream>
    #include<cmath>
    using namespace std;

    char str[100010];
    int cnt=0;

    void show(int n){

    int a=0,b=0;
    for(int i=0;i<cnt;i++){
    if(str[i]=='W') a++;
    if(str[i]=='L') b++;

    if((a>=n||b>=n)&&abs(a-b)>=2){
    cout<<a<<":"<<b<<endl;
    a=b=0;
    }
    }

    cout<<a<<":"<<b<<endl;
    }

    int main(){
    char ch;

    while(cin>>ch&&ch!='E'){
    if(ch=='W'||ch=='L'){
    str[cnt++]=ch;
    }
    }

    show(11);
    cout<<endl;
    show(21);
    return 0;
    }

  • 0
    @ 2024-11-24 00:39:43

    大家都好强啊,我贡献一个面向对象的版本吧,效率可能没有大佬们的c语言版高,但是比较简单易懂,而且不容易踩坑。555

    #include<vector>
    #include<iostream>
    
    using namespace std;
    
    class Game{
    public:
        Game(int n):base(n),xh(0),cp(0){};
        bool insert(char c);
        bool is_end();
        friend ostream& operator<<(ostream& os, const Game& g);
    private:
        int base;//表示比赛的局数
        int xh;//表示小华的得分
        int cp;//表示对手的得分
    };
    
    bool Game::insert(char c){
        if(c=='W'){
            ++xh;
        }else if(c=='L'){
            ++cp;   
        }
        return true;
    }
    
    bool Game::is_end(){
        if(xh>=base&&(xh-cp>1)){ //判断一局是否结束,注意这里要不能是'==',必须是'>='
            return true;
        }
        if(cp>=base&&(cp-xh>1)){
            return true;
        }
        return false;
    }
    
    ostream& operator<<(ostream& os, const Game& g){ //重载<<必须是全局函数,不能是类中的成员函数
        os<<g.xh<<":"<<g.cp;
        return os;
    }
    
    int main(){
        vector<Game> vec_21(1,Game(21));
        vector<Game> vec_11(1,Game(11));
        char c;
        while(c=cin.get()){
            if(c=='E'){
                break;
            }
            if(c=='W'|| c=='L'){
                vec_11.back().insert(c);//先将读取的字符处理,处理完后立即判断比赛是否结束
                if(vec_11.back().is_end()){
                    vec_11.push_back(Game(11));//如果比赛结束,立即开始一个新比赛,这样就能正确输出0:0了。
                }
                vec_21.back().insert(c);
                if(vec_21.back().is_end()){
                    vec_21.push_back(Game(21));
                }
            }
        }
        
        for(auto s:vec_11){
            cout<<s<<endl;
        }
        cout<<endl;
        for(auto s:vec_21){
            cout<<s<<endl;
        }
    }
    
  • 0
    @ 2023-09-20 10:31:56

    #include <iostream>
    using namespace std;
    int main()
    {
    int w=0,l=0;
    string s1,s2;//方便输入
    while(getline(cin,s2))s1+=s2;//输入字符串
    for(char c:s1)//输出11分制
    {
    if(c=='W')w++;
    else if(c=='L') l++;
    if((w>=11||l>=11)&&(w-l>=2||l-w>=2))
    {
    cout<<w<<":"<<l<<endl;
    l=0;w=0;
    }
    if(c=='E') cout<<w<<":"<<l<<endl;
    }
    l=0;w=0;
    cout<<endl;//两分制中间隔一行
    for(char c:s1)//输出21分制
    {
    if(c=='W')w++;
    else if(c=='L') l++;
    if((w>=21||l>=21)&&(w-l>=2||l-w>=2))//两个条件差别,就是把11换成21了
    {
    cout<<w<<":"<<l<<endl;
    l=0;w=0;
    }
    if(c=='E') cout<<w<<":"<<l<<endl;

    }
    return 0;

    }

  • 0
    @ 2023-07-17 19:28:47
    #include<iostream>
    #include<cstdlib>
    using namespace std; 
    // 数组开外面可防止主函数爆栈,定义在main函数外就是定义全局变量(内就是局部变量,容易造成栈的溢出),在静态存储区内分配内存 
    char a[100000]; 
    int main()
    {   //定义变量n,表示总共交手次数,即是字符串a的长度,w存储华华的得分,l存储对手的得分 
        int  n = 0, w = 0, l = 0;
        while ( true ) {
            cin >> a[n];
            //E代表比赛结束,故跳出循环 
            if (a[n] == 'E') break;
            n++;
        }
        // 11分制下  每一轮  的比分 
        for (int i = 0;i < n;i++ ) {
            if (a[i] == 'W') w++; 
            if (a[i] == 'L') l++;
            if ((w >= 11 || l >= 11) && abs (w-l) >= 2) {
                cout << w << ":" << l << endl;
                // 该轮次结束,将 得分w,l初始化为0,便于进行计算下一轮的比分 
                w = 0;
                l = 0;
            }
        }
        //存在没有分出胜负的情况 
        cout << w << ":" << l << endl;
        //这是11分制下的最后一局,结束后应当 将 得分w,l初始化为0,因为后面要输出21分制下的比分 
        w = 0;
        l = 0;
        
        //原理同上         
        for (int i = 0;i < n;i++ ) {
            if (a[i] == 'W') w++;
            else if (a[i] == 'L') l++;
            if ((w >= 21 || l >= 21) && abs (w-l) >= 2) {
                cout << w << ":" << l << endl;
                w = 0;
                l = 0;
            }
        }
        cout << w << ":" << l << endl;
        //不初始化w,l是因为已经结束咯 
        return 0;
    }
    
  • 0
    @ 2022-08-28 20:55:54

    #include<iostream>
    #include<cmath>
    using namespace std;

    char letter[100000];
    void Output(int cap,int type) {
    int w = 0, l = 0;
    for (int i = 0; i < cap; i++) {
    if (letter[i] == 'W')
    w++;
    if (letter[i] == 'L')
    l++;
    if (((w == type||l==type)&&(abs(l-w)>=2))||((w>type||l>type)&&(abs(l-w)==2)) ){
    cout << w << ':' << l;
    w = 0, l = 0;
    cout << endl;
    }
    }
    cout << w << ':' << l;
    }
    int main() {
    int i = 0;
    while ((letter[i] = getchar()) != EOF) {
    if (letter[i] == 'E')
    break;
    i++;
    }
    Output(i, 11);
    cout << endl<<endl;
    Output(i, 21);

    return 0;
    }
    这位同学分析的很好,但是文字的排版有事也会被系统误判,记得小心哦!

  • 0
    @ 2022-03-28 22:37:58

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    char competeCount[100000];
    int main() {

    int hcount = 0, hcount2 = 0;

    for (int i = 0;; i++) {

    cin>>competeCount[i];
    if (competeCount[i] == 'E')
    break;

    }

    //11读取
    for (int i = 0;; i++) {
    if (competeCount[i] == 'E') {
    cout << hcount << ":" << hcount2 << endl;
    hcount = 0;
    hcount2 = 0;
    break;
    }
    if (competeCount[i] == 'W')
    hcount++;
    if (competeCount[i] == 'L')
    hcount2++;

    if ((hcount >= 11 || hcount2 >= 11) && (fabs(hcount - hcount2) >= 2)) {
    cout << hcount << ":" << hcount2 << endl;
    hcount = 0;
    hcount2 = 0;
    }

    }
    cout << endl;
    //21制读取
    for (int i = 0;; i++) {
    if (competeCount[i] == 'E') {
    cout << hcount << ":" << hcount2 << endl;
    break;
    }
    if (competeCount[i] == 'W')
    hcount++;
    if (competeCount[i] == 'L')
    hcount2++;

    if ((hcount >= 21 || hcount2 >= 21) && (fabs(hcount - hcount2) >= 2)) {
    cout << hcount << ":" << hcount2 << endl;
    hcount = 0;
    hcount2 = 0;
    }

    }

    return 0;
    }

  • 0
    @ 2022-03-03 20:26:17

    answer:

    #include<iostream>
    #include<cmath>
    using namespace std;
    char str[100010];
    int cnt=0;
    void show(int n)
    {
        int a=0,b=0;
        for(int i=0;i<cnt;i++)
        {
            if(str[i]=='W') a++;
            if(str[i]=='L') b++;
            if((a>=n||b>=n)&&abs(a-b)>=2)
            {
                cout<<a<<":"<<b<<endl;
                a=b=0;
            }
        }
        cout<<a<<":"<<b<<endl;
    }
    int main()
    {
        char ch;
        while(cin>>ch&&ch!='E')
        {
            if(ch=='W'||ch=='L')
            {
                str[cnt++]=ch;
            }
        }
        show(11);
        cout<<endl;
        show(21);
    }
    
    
  • 0
    @ 2021-12-22 17:08:32

    0

  • 0
    @ 2021-11-03 19:09:07

    #include <cmath>
    #include <stdio.h>

    char in[1000000];

    void Result(int mode){
    int W = 0, L = 0;
    for (int i = 0; in[i] != '\0'; i++) {
    switch (in[i]) {
    case 'W':W++; break;
    case 'L':L++; break;
    }
    if (((W >= mode)||(L >= mode)) && (abs(W - L) >= 2)) {
    printf("%d:%d\n", W, L);
    W = 0,L = 0;
    }

    }
    printf("%d:%d\n\n", W, L);
    }

    int main()
    {

    for (int i = 0; (scanf("%c", &in[i]) != EOF) && (in[i] != 'E'); i++, in[i + 1] = '\0') { if (in[i] == '\n')i--; }
    Result(11);
    Result(21);
    return 0;
    }

  • 0
    @ 2021-10-06 21:09:26
    use std::io;
    fn main() {
        let mut score: Vec<bool> = vec![];
        'out: loop {
            let mut line = String::new();
            io::stdin().read_line(&mut line).expect("stdin");
    
            for word in line.chars() {
                match word {
                    'W' => score.push(true),
                    'L' => score.push(false),
                    'E' => break 'out,
                    _ => {}
                };
            }
        }
        final_result(&score, 11);
        final_result(&score, 21);
    }
    
    fn final_result(score: &Vec<bool>, choice: i32) {
        let mut w = 0;
        let mut l = 0;
    
        for &i in score {
            if i {
                w += 1;
            } else {
                l += 1;
            }
    
            if (w >= choice || l >= choice) && ((w - l).abs() >= 2) {
                println!("{}:{}", w, l);
                w = 0;
                l = 0;
            }
        }
        println!("{}:{}\n", w, l);
    }
    
  • 0

    自动AC机直接过

信息

ID
1217
难度
7
分类
字符串 点击显示
标签
递交数
18746
已通过
4292
通过率
23%
被复制
34
上传者