wa了9 10两个点
查看原帖
wa了9 10两个点
702161
abcaawtq楼主2023/8/11 00:42
#include<bits/stdc++.h>
using namespace std;
string s;
struct node{
	int next;
	int val;
	int last;
}a[1005];
int cheak(int n){
	if(a[n].val>1)return 1;
	if(a[1].val>1&&a[1].val!=4)return 1;
	if(n==1&&a[1].val<=1)return 0;
	if(n==1&&a[1].val>1)return 1;
	if((a[1].val>1||a[n].val>1)&&a[1].val!=4&&a[n].val!=4)return 1;
	if(a[n].val==4)return 2;
	if(a[1].val<=1&&a[2].val<=1)return 1;
	if(a[n].val<=1&&a[n-1].val<=1)return 1;
	for(int i=1;i<=n;i++){
		if(a[i-1].val!=4&&a[i+1].val!=4&&a[i].val!=4&&a[i].val>1&&(a[i-1].val>1||a[i+1].val>1))return 3;
		if(a[i].val<=1&&(a[i-1].val<=1||a[i+1].val<=1)&&i!=1&&i!=n)return 4;
		if(a[i].val==4&&a[i+1].val>1&&a[i+1].val<4)return 5;
		if(a[i].val==4&&a[i-1].val<=1&&a[i+1].val<=1&&i!=1&&1!=n)return 1;
	} 
	return 0;
}
int main(){ 
	int n=0;
	while(cin>>s){
		if(s=="true"){
			a[++n].val=1;
			a[n-1].next=n;
			a[n].last=n-1;
		}
		if(s=="false"){
			a[++n].val=0;
			a[n-1].next=n;
			a[n].last=n-1;
		}
		if(s=="or"){
			a[++n].val=2;
			a[n-1].next=n;
			a[n].last=n-1;
		}
		if(s=="and"){
			a[++n].val=3;
			a[n-1].next=n;
			a[n].last=n-1;
		}
		if(s=="not"){
			a[++n].val=4;
			a[n-1].next=n;
			a[n].last=n-1;
		}
	}
	if(cheak(n)){
		//cout<<cheak(n);
		cout<<"error";
		return 0;
	}
	for(int i=1;i<=n;i++){
		if(a[i].val==4){
			int ans=0;
			while(a[i].val==4){
				ans++;
				a[a[i].last].next=a[i].next;
				a[a[i].next].last=a[i].last;
				a[i].val=-1;
				i=a[i].next;
			}
			if(ans%2==1){
				if(a[i].val==1)a[i].val=0;
				else
				a[i].val=1;
			}
		}
	}
	for(int i=1;i<=n;i++){
		if(a[i].val==3){
			a[i].val=(a[a[i].last].val&&a[a[i].next].val);
			a[a[a[i].last].last].next=i;
			a[a[a[i].next].next].last=i; 
			a[a[i].next].val=-1;
			a[a[i].last].val=-1;
		}
	}
	for(int i=1;i<=n;i++){
		if(a[i].val==2){
			a[i].val=(a[a[i].last].val||a[a[i].next].val);
			a[a[a[i].last].last].next=i;
			a[a[a[i].next].next].last=i; 
			a[a[i].next].val=-1;
			a[a[i].last].val=-1;
		}
	}
	for(int i=1;i<=n;i++){
		if(a[i].val!=-1){
			if(a[i].val)
			cout<<"true";
			else
			cout<<"false";
		}
	}
	return 0;
}
2023/8/11 00:42
加载中...