症状:样例第四组数据时输入第一个E后直接跳出了该组数据并输出了ERR 导致少输入一个E 然后再导致挂一溜 将第四组数据的行数L输入为5后读入了4行 然后输出了ERR 我在调这个题的时候输出了各种东西最后发现它似乎就是无缘无故就出去了 导致整个人裂开
得分:过了最后一个点
代码:
#include <bits/stdc++.h>
using namespace std;
struct ceng{
char blm;
bool yysy=0;
bool canuse=1;
}mian[105];
int main(){
int t;
cin>>t;
for(int zx=0;zx<t;zx++){
int x;
cin>>x;
char qwq[10];
cin>>qwq;
int fzd;
int a=strlen(qwq);
if(a==4)fzd=0;
if(a==6)fzd=qwq[4]-'0';
if(a==7){
fzd=qwq[4]-'0';
fzd*=10;
fzd+=(qwq[5]-'0');
}
// cout<<fzd;
int cs=0;
int ncs=0;
int mcs=0;
bool flag=0;
if(x%2==1)flag=1;
for(int as=0;as<x;as++){
//cout<<flag<<" "<<cs<<" ";
// cout<<cs<<" ";
char qqq;
cin>>qqq;
if(qqq=='E'){
cs--;
// cout<<cs<<" ";
if(cs<0)flag=1;
if(flag==1)continue;
if(mian[cs].yysy)ncs--;
}
if(qqq=='F'){
char qw,we,er;
cin>>qw>>we>>er;
mian[cs].blm=qw;
cs++;
bool flag2=0;
for(int i=0;i<cs-1;i++){
if(mian[i].blm==qw)flag=1;
if(mian[i].canuse==0)flag2=1;
break;
}
if(flag==1)continue;
if(we=='n'){
if(er=='n'){
mian[cs-1].canuse=1;
mian[cs-1].yysy=0;
continue;
}else{
mian[cs-1].canuse=0;
mian[cs-1].yysy=0;
continue;
}
}
if(er=='n'){
mian[cs-1].canuse=1;
mian[cs-1].yysy=1;
if(!flag2)ncs++;
if(ncs>mcs)mcs=ncs;
continue;
}
int from=we-'0',to=er-'0';
if(from<to){
mian[cs-1].canuse=0;
mian[cs-1].yysy=0;
continue;
}
mian[cs-1].canuse=1;
mian[cs-1].yysy=0;
}
}
if(cs!=0)flag=1;
if(flag){
cout<<"ERR"<<endl;
continue;
}
if(mcs==fzd){
cout<<"Yes"<<endl;
continue;
}
cout<<"No"<<endl;
}
return 0;
}
//张国俊