45pts求调,5,7样例WA了,8-11RE了
查看原帖
45pts求调,5,7样例WA了,8-11RE了
1051105
chenshihao20110204楼主2024/8/14 21:36

下面是代码

#include<bits/stdc++.h>
int t,l;
int tnum,sum,ret,flag,num,flag2;
char cnt2[1001];
int cnt1[1001];
using namespace std;
int get_num(string s)
{
	if(s[0]=='n') return 1001;
	int ans=0;
	for(int i=0;i<s.length();i++)
	{
		ans=ans*10+s[i]-'0';
	}
	return ans;
}
int get_c(string s)
{
	if(s[2]=='1') return 0;
	int ans=0;
	ans=s[4]-'0';
	if(s[5]>='0'&&s[5]<='9') ans=ans*10+s[5]-'0';
	return ans;
}
int main()
{
	scanf("%d",&t);
	for(int i=0;i<t;i++)
	{	
		tnum=sum=ret=flag=num=flag2=0;
		scanf("%d",&l);
		getchar();
		string s;
		cin>>s;
		for(int j=0;j<l;j++)
		{
			char ch;
			cin>>ch;
			if(ch=='E')
			{
				--sum;
				if(sum==0)
				{
					num=max(num,tnum);
				}
				tnum--;
				cnt1[cnt2[ret]-'a']=0;
				cnt2[ret--]=0; 
				if(ret<0) flag=1;
				if(flag2&&sum==0) flag2=0;
			}
			getchar();
			char z;
			string x,y;
			if(ch=='F')
			{
				scanf("%c",&z);
				getchar();
				cin>>x;
				getchar();
				cin>>y; 
			}
			
			if(flag==1)
			{
				continue;
			}
			if(ch=='F')
			{
				if(cnt1[z-'a']!=0)
				{
					flag=1;//变量名问题
				}
				else
				{
					cnt2[++ret]=z;
					cnt1[z-'a']=1;
				}
				sum++;
				if(get_num(x)>get_num(y))
				{
					num=max(num,tnum);
					flag2=1;//循环无法进入问题 
				}
				else
				{
					if(flag2!=1) tnum+=((get_num(y)-get_num(x))/530);
					num=max(tnum,num);
				}
			}
		}
		if(flag or sum!=0)
		{
			printf("ERR");
			for(int i=0;i<26;i++) cnt1[i]=0;
			while(ret>0) cnt2[ret--]=0;
			if(i!=t-1) printf("\n");
			continue;
		}
		if(num==get_c(s)) printf("Yes");
		else
		{
			printf("No");
		}
		if(i!=t-1) printf("\n");
		for(int i=0;i<26;i++) cnt1[i]=0;
		while(ret>0) cnt2[--ret]=0;
	}
}
2024/8/14 21:36
加载中...