我用getline写的90分,剩下一个RE,这是为什么?

P1042 [NOIP2003 普及组] 乒乓球

@[du__yi__hong42306](/user/716472) 第一个数据开头E,读入的字符串为空,但是你上面函数循环写的i<=v.length()-1,由于v.length()是unsigned long long,所以会爆然后数值变为无穷大,死循环访问内存越界,就会RE,改成i<v.length()就好
by EvilSpirits @ 2023-08-06 22:36:35


@[du__yi__hong42306](/user/716472) ```cpp #include<bits/stdc++.h> using namespace std; string v; int fenshu(int n) { int a=0,b=0; if(!v.empty()){ for(int i=0;i<=v.length()-1;i++) { if(v[i]=='W')a++; if(v[i]=='L')b++; if((a>=n||b>=n) && abs(a-b)>=2) { cout<<a<<':'<<b<<endl; a=0; b=0; } } } cout<<a<<':'<<b<<endl; return 0; } int main() { getline(cin,v,'E'); fenshu(11); cout<<endl; fenshu(21); return 0; } ``` 你要判断v是否为空(开头是E)
by U_K_E @ 2023-08-06 22:43:34


@[Error__404](/user/691596) 多谢
by du__yi__hong42306 @ 2023-08-09 19:25:01


|