El problema se
simula en gran medida y se compara con el tumor ... El
punto más importante es while (n - -) while (n--)w h i l e ( n-- ) Donden = - 1 n = -1norte=- A la 1 en punto el programa seguirá ejecutándose ... porque ha estado atascado durante una hora ...
Mira el código específicamente, escribir paso a paso tendrá éxito
PS: PS:P S: Demasiadas variables, así que déjame explicarte qué significan
ttt es el número de conjuntos de datos,nnn es el número de oraciones en un programa
ans ansa n s es la respuesta al programa,suma sumas u m es la respuesta de Xiao Ming
ent ent ente n t es si este bucle puede entrar,ahora ahoran o w es el bucle en el nivel de anidamiento. El programa en este bucle es inútil
tim timt i m es la complejidad del tiempo actual,rep repr e p se refiere aFFRelación F EEE algunos más
sobre el código (creo que el código es relativamente corto
#include<bits/stdc++.h>
using namespace std;
string a,b;
int t,n,ans,sum,now,tim,rep,nam[30];
bool ent,vis[30],add[110];
int main(){
scanf("%d",&t);
while(t--){
n=sum=ans=rep=tim=ent=now=0;
memset(vis,0,sizeof(vis));
memset(nam,0,sizeof(nam));
memset(add,0,sizeof(add));
while(b[0]!='O'){
a=b;cin>>b;}
int lena=a.length(),lenb=b.length();
for(int i=0;i<lena;i++)n=(n<<3)+(n<<1)+(a[i]&15);
for(int i=4;i<lenb-1;i++)sum=(sum<<3)+(sum<<1)+(b[i]&15);
while(n>0){
//不是n--!不然程序出不去!!
n--;
cin>>a;
if(a[0]=='F'){
rep++;cin>>a;
if(vis[a[0]-'a'])rep=-1;
else vis[a[0]-'a']=true,nam[rep]=a[0]-'a';
cin>>a>>b;
if(a[0]!='n'&&b[0]=='n'&&!ent)tim++,add[rep]=true;
else if((a[0]=='n'&&b[0]!='n'||(a.length()>b.length())||(a.length()==b.length()&&a>b))&&!ent)
ent=true,now=rep;
}
else if(rep>=0){
//一定要>=0不然会RE
ans=max(ans,tim),vis[nam[rep]]=0;
if(add[rep])add[rep]=false,tim--;
rep--;
if(now>0&&rep<now)now=ent=0;
}
if(rep<0)puts("ERR"),n=-1;
}
if(rep>0)puts("ERR");
else if(rep==0&&ans==sum)puts("Yes");
else if(rep==0&&ans!=sum)puts("No");
}
}