50???
查看原帖
50???
1034688
_Geburah楼主2024/7/3 17:59
#include<bits/stdc++.h>
using namespace std;
string a;
int b[256];
bool c[256];
int end1=1,start=1;
int main()
{
	cin>>a;
	int size=a.size();
	for(int i=0;i<size;i++)
	{
		if(a[i]=='n'&&a[i+start]=='o'&&a[i+2]=='t')
		{
			b[end1]=2;
			c[end1]=0;
			end1++;
		}
		else if(a[i]=='f'&&a[i+start]=='a'&&a[i+2]=='l'&&a[i+3]=='s'&&a[i+4]=='e')
		{
			b[end1]=0;
			c[end1]=1;
			end1++;
		}
		else if(a[i]=='t'&&a[i+start]=='r'&&a[i+2]=='u'&&a[i+3]=='e')
		{
			b[end1]=1;
			c[end1]=1;
			end1++;
		}
		else if(a[i]=='o'&&a[i+start]=='r')
		{
			b[end1]=3;
			c[end1]=0;
			end1++;
		}
		else if(a[i]=='a'&&a[i+start]=='n'&&a[i+2]=='d')
		{
			b[end1]=4;
			c[end1]=0;
			end1++;
		}
	}
	end1--;
	if((c[start]==0&&b[start]!=2)||(c[end1]==0))
	{
		cout<<"error";return 0;
	}
	for(int i=start;i<=end1;i++)
	{
		if(b[i]==2)
		{
			int j=i;
			int sum=0;
			while(b[j]==2||b[j]==0)
			{
				if(b[j]!=0)
				{
					sum++;
					b[j]==0;
				}
				j++;
			}
			if(b[j]>=2)
			{
				cout<<"error";return 0;
			}
			if(sum%2==1)
			{
				b[j]=~b[j];
			}
		}
	}
	for(int i=start;i<=end1;i++)
	{
		if(b[i]==3)
		{
			int  j=i-1,k=i+1;
			while(b[j]>=2)
			{
				j--;
			}
			while(b[k]>=2)
			{
				k++;
			}
			b[j]=b[j]&&b[k];
		}
	}
	for(int i=start;i<=end1;i++)
	{
		if(b[i]==4)
		{
			int  j=i-1,k=i+1;
			while(b[j]>=2)
			{
				j--;
			}
			while(b[k]>=2)
			{
				k++;
			}
			b[j]=b[j]||b[k];
		}
	}
	while(start<end1&&b[start]>=2)
	{
		start++;
	}
	if(b[start]==1)cout<<"true\n";
	else if(b[start]==0)cout<<"false\n";
	else cout<<"errorn\n";
	return 0;
}
2024/7/3 17:59
加载中...