m0_74153183 2022-11-06 07:49 采纳率: 95.5%
浏览 43
已结题

为什么我TEL了(洛谷,关于乒乓球)

问题遇到的现象和发生背景

为什么我TEL了

img

img

用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>
int win[100000];
int w=0, l=0;
int main()
{
    char s[100];
    int count=0;
    for (int i = 1;; i++)
    {
        scanf("%c", &s[i]);
        count++;
        {
            if (s[i] == 'W')win[i] = 1;
        else if (s[i] == 'L') win[i] = 2;
        else if (s[i] == 'E') win[i] = 0;/* break;*/
        else   win[i] = 0; 
        }
    }
    for (int i = 1;i<=count; i++)
    {
        if (win[i] == 1)w++; 
        if (win[i] == 2)l++; 
        if (win[i] == 0)
        {
            /*printf("%d:%d", w, l);*/
            break;
        }
        if (w - l >= 2 || l - w >= 2)
            if (w >= 11 || l >= 11)
            {
                printf("%d:%d\n", w, l);
                w = 0;
                l = 0;
            }
    }
    w = 0;
    l = 0;
    printf("\n");
    for (int i = 1;i<=count; i++)
    {
        if (win[i] == 1)w++;
        if (win[i] == 2)l++;
        if (win[i] == 0)
        {
            break;
        }
        if (w - l >= 2 || l - w >= 2)
            if (w >= 21 || l >= 21)
            {
                printf("%d:%d\n", w, l);
                w = 0;
                l = 0;
            }
    }
    return 0;
}
运行结果及报错内容

代码编译错误

展开全部

  • 写回答

1条回答 默认 最新

  • (x,y). C/C++领域新星创作者 2022-11-06 08:33
    关注
    
    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    #include<string.h>    
    #include<math.h>
    #include<list>
    #include<stack>
    
    using namespace std;
    
    struct R
    {
        int ll, rr;
    }R1[10005],R2[10005];
    
    int main(int argc, char* argv[])
    {
        string s;
        int l1 = 0, l2 = 0, r1 = 0, r2 = 0;
        int c1 = 0, c2 = 0;
        while (cin >> s)
        {
            int len = s.length();
            int i;
            for (i = 0; i < len; ++i)
            {
                if (s[i] == 'W')
                {
                    l1++; l2++;
                }
                else if (s[i] == 'L')
                {
                    r1++; r2++;
                }
                else break;
                //分差大于或者等于 2
                if ((l1 >= 11 || r1 >= 11) && abs(l1 - r1) >= 2)
                {
                    R1[c1].ll = l1;
                    R1[c1].rr = r1;
                    c1++;
                    l1 = r1 = 0;
                }
                if ((l2 >= 21 || r2 >= 21) && abs(l2 - r2) >= 2)
                {
                    R2[c2].ll = l2;
                    R2[c2].rr = r2;
                    c2++;
                    l2 = r2 = 0;
                }
            }
            if (s[i] == 'E')
            {
                R1[c1].ll = l1;
                R1[c1].rr = r1;
                c1++;
                
    
                R2[c2].ll = l2;
                R2[c2].rr = r2;
                c2++;
                break;
            }
        }
        for (int i = 0; i < c1; ++i)
        {
            printf("%d:%d\n", R1[i].ll, R1[i].rr);
        }
        printf("\n");
        for (int i = 0; i < c2; ++i)
        {
            printf("%d:%d\n", R2[i].ll, R2[i].rr);
        }
        return 0;
    }
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    (x,y). 2022-11-06 08:33

    
    #include<stdio.h>
    #define N 25*2501
     
     
    char str[N];
     
    int main()
    {
        int length,cnt1=0,cnt2=0,cnt3=0,cnt4=0,i;
        for(i=0;;i++)
        {
            scanf("%c",str+i);
            if(str[i] == 'E')
                break;
        }
        length = i;
        for(i=0;i<=length;i++)//11分制
        {
            //printf("str[%d]=%c\n",i,str[i]);
            if(str[i]=='W')
                cnt1++;
            if(str[i]=='L')
                cnt2++;
            if(str[i]=='E')
            {
                printf("%d:%d\n",cnt1,cnt2);
                break;
            }
            if(cnt1>=11&&(cnt1-cnt2)>=2||cnt2>=11&&(cnt2-cnt1)>=2)
            {
                printf("%d:%d\n",cnt1,cnt2);
                cnt1=0;
                cnt2=0;
            }    
                    
         } 
         printf("\n");
         for(i=0;i<=length;i++)//同21分制一样
        {
            if(str[i]=='W')
                cnt3++;
            if(str[i]=='L')
                cnt4++;
            if(str[i]=='E')
            {
                printf("%d:%d\n",cnt3,cnt4);
                break;
            }
            if(cnt3>=21&&(cnt3-cnt4)>=2||cnt4>=21&&(cnt4-cnt3)>=2)
            {
                printf("%d:%d\n",cnt3,cnt4);
                cnt3=0;
                cnt4=0;
                }            
         } 
        return 0;
    }
    

    回复
    (x,y). 2022-11-06 08:33

    记得采纳哦

    回复
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 11月13日
  • 已采纳回答 11月6日
  • 修改了问题 11月6日
  • 创建了问题 11月6日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部