C语言,只ac了第一个和最后一个,20分,求大佬指点

P1042 [NOIP2003 普及组] 乒乓球

Ar1s1234 @ 2024-09-16 12:01:09

#include<stdio.h>
#include<math.h>

void count()
{
    char str[25];
    int flag = 1,i;
    int cnt1[6000][2] = {0},cnt2[3000][2] = {0},count1 = 0,count2 = 0;

    while(flag)
    {
        gets(str);
        for(i = 0;str[i] != '\0';i++)
        {
            if(str[i] == 'E')
            {
                flag = 0;
                break;
            }
            if(str[i] == 'W')
            {
                cnt1[count1][0]++;
                cnt2[count2][0]++;
            }
            else
            {
                cnt1[count1][1]++;
                cnt2[count2][1]++;
            }
            if((cnt1[count1][0] >= 11 || cnt1[count1][1] >= 11) && pow(cnt1[count1][0] - cnt1[count1][1] , 2) >= 4)
            {
                count1++;
            }
            if((cnt2[count2][0] >= 21 || cnt2[count2][1] >= 21) && pow(cnt2[count2][0] - cnt2[count2][1] , 2) >= 4)
            {
                count2++;
            }
        }
    }

    for(i = 0;i <= count1;i++)
    {
        printf("%d:%d\n",cnt1[i][0],cnt1[i][1]);
    }
    printf("\n");
    for(i = 0;i <= count2;i++)
    {
        printf("%d:%d\n",cnt2[i][0],cnt2[i][1]);
    }
}

int main()
{
    count();

    return 0;
}

代码写的比较丑陋,但是在自己电脑上面跑的结果应该是对的,到平台上就出现了问题,求大佬指点


by Ar1s1234 @ 2024-09-16 12:04:55

搞定了,问题好像出在了洛谷的输入上面,if里的判定加了一条(str[i] == 'L')就好了


by sanjuu2024 @ 2024-10-12 10:28:17

@Ar1s1234 感谢,我也是这个问题,幸好看到你的贴子了,不然不知道要卡多久o( ̄▽ ̄)o


by sanjuu2024 @ 2024-10-12 10:29:20

@Ar1s1234 顺便可以问问为什么加上这一句就好了嘛,洛谷输入里面还有其他什么字符吗?


|