本题的测试点是不是有问题?

P1042 [NOIP2003 普及组] 乒乓球

```cpp #include <iostream> #include <cstdio> #include <stdio.h> #include <cstring> #include <string.h> #include <algorithm> #include <cmath> using namespace std; char arr[62550]; char c;int cnt; int w, l; int win1[2] = { 11,21 }; //这是AC代码 void win(int a) { for (int i = 0; i < cnt; i++) { if (arr[i] == 'W') w++; if(arr[i] == 'L') // 看这里!!!!! l++; //....防止违规不全发代码了 } int main() { while ((c = getchar())!= 'E') { if (c == '\n') continue; arr[cnt++] = c; } win(0); putchar('\n'); win(1); return 0; } ```
by afreshmanofclanguage @ 2024-02-05 16:56:49


两个代码的区别在于else,但是字符串中应当只有W和L(E和\n和后边的所有内容不会进入字符串),然而使用互斥的判断却出了错,说明测试点中含有第五个或者更多字符
by afreshmanofclanguage @ 2024-02-05 16:59:53


补充:用例均正确
by afreshmanofclanguage @ 2024-02-05 17:00:30


@[afreshmanofclanguage](/user/1185696) 不是,你不发全代码鬼知道哪有问题
by Bingxiu @ 2024-02-05 17:13:02


@[afreshmanofclanguage](/user/1185696) 哦我知道了,有换行(
by Bingxiu @ 2024-02-05 17:14:02


@[afreshmanofclanguage](/user/1185696) 非常感谢这个帖子,我和楼主一个问题均用的是else判断,就只有20分调了半天把else换成if判断AC ```c #include<stdio.h> #include<string.h> int main() { char a[65000]; for(int i=0;i>=0;i++) { scanf("%c",&a[i]); if(a[i]=='\n') { i--; continue; } if(a[i]=='E') break; } int number1=0,number2=0; for(int i=0;i>=0;i++) { if(a[i]=='E') { printf("%d:%d\n\n",number1,number2); break; } if(a[i]=='W') { number1++; } if(a[i]=='L')//这里如果是else会WA { number2++; } if((number1>=11&&(number1-number2)>=2)||(number2>=11&&(number2-number1)>=2)) { printf("%d:%d\n",number1,number2); number1=0; number2=0; } } number1=0,number2=0; int flag=0; for(int i=0;i>=0;i++) { if(a[i]=='E') { printf("%d:%d",number1,number2); break; } if(a[i]=='W') { number1++; } if(a[i]=='L')//这里如果是else会WA { number2++; } if((number1>=21&&(number1-number2)>=2)||(number2>=21&&(number2-number1)>=2)) { printf("%d:%d\n",number1,number2); number1=0; number2=0; flag++; } } return 0; } ```
by HEU_ZWZ @ 2024-03-11 23:06:16


|