WA 90分 求助
  • 板块P1575 正误问题
  • 楼主bbbzzx
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/8/18 08:22
  • 上次更新2023/10/27 14:50:53
查看原帖
WA 90分 求助
372498
bbbzzx楼主2022/8/18 08:22

Subtask 0 #9 wA

#include<bits/stdc++.h> 
using namespace std;
string s[100];
int n=1;
void f(int k)
{
	for(int i=k;i<n;i++)
		s[i]=s[i+1];
	s[n]="";
}
int main()
{
	while(cin>>s[n]) n++;
	n--;
	//cout<<n;
	if(s[1]=="and"||s[1]=="or"||s[n]=="and"||s[n]=="or"||s[n]=="not")
		return cout<<"error"<<endl,0;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<i;j++)
			if(s[j]=="not")
			{
				i=j;
				break;
			}
		if(s[i]=="not")
		{
			for(int j=i+1;j<=n;j++)
			{
				if(s[j]=="true")
				{
					s[j]="false";
					s[i]="";
					f(i);
					break;
				}
				else
				if(s[j]=="false")
				{
					s[j]="true";
					s[i]="";
					f(i);
					break;
				}
				else
				if(s[j]=="not")
				{
					s[j]=s[i]="";
					f(j);
					f(i);
					/*for(int k=1;k<=n;k++)
						cout<<s[k]<<" ";
					cout<<endl;*/
					break;
				}
				else
					return cout<<"error"<<endl,0; 
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<i;j++)
			if(s[j]=="and")
			{
				i=j;
				break;
			}
		if(s[i]=="and")
		{
			if(s[i-1]=="true")
			{
				if(s[i+1]=="true")
				{
					s[i-1]=s[i]="";
					s[i+1]="true";
					f(i-1);
					f(i-1);
				}
				else
				if(s[i+1]=="false")
				{
					s[i-1]=s[i]="";
					s[i+1]="false";
					f(i-1);
					f(i-1);
				//	cout<<s[i-1]<<endl;
				}
				else
					return cout<<"error"<<endl,0;
			}
			else
			if(s[i-1]=="false")
			{
				if(s[i+1]=="true"||s[i+1]=="false")
				{
					s[i-1]=s[i]="";
					s[i+1]="false";
					f(i-1);
					f(i-1);
				}
				else
					return cout<<"error"<<endl,0;
			}
			else
				return cout<<"error"<<endl,0;
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<i;j++)
			if(s[j]=="or")
			{
				i=j;
				break;
			}
		if(s[i]=="or")
		{
			if(s[i-1]=="true")
			{
				if(s[i+1]=="true")
				{
					s[i-1]=s[i]="";
					s[i+1]="true";
					f(i-1);
					f(i-1);
				}
				else
				if(s[i+1]=="false")
				{
					s[i-1]=s[i]="";
					s[i+1]="true";
					f(i-1);
					f(i-1);
				}
				else
					return cout<<"error"<<endl,0;
			}
			else
			if(s[i-1]=="false")
			{
				if(s[i+1]=="true")
				{
					s[i-1]=s[i]="";
					s[i+1]="true";
					f(i-1);
					f(i-1);
				}
				if(s[i+1]=="false")
				{
					s[i-1]=s[i]="";
					s[i+1]="false";
					f(i-1);
					f(i-1);
				}
				else
					return cout<<"error"<<endl,0;
			}
			else
				return cout<<"error"<<endl,0;
		}
	}
	map<string,int> m;
	for(int i=1;i<=n;i++)
		m[s[i]]++;
	if(m.empty())
		return cout<<"error"<<endl,0;
	if(m["true"]>1||m["false"]>1||(m["true"]>=1&&m["false"]>=1))
		return cout<<"error"<<endl,0;
	if(m["true"]==1)
		cout<<"true";
	else
		cout<<"false";
	return 0; 
}
2022/8/18 08:22
加载中...