哪有错
查看原帖
哪有错
786154
zhanxiangkun楼主2023/7/24 11:54
#include <bits/stdc++.h>
using namespace std;
string a;
int p,q;
int s(int l,int r);
int main(){
	freopen ("s.in","r",stdin);
	freopen ("s.out","w",stdout);
	p=0;q=0;
	cin >> a;
	int answerdt=s(0,33);
	cout << answerdt << '\n' << q << ' ' << p;
	return 0;
}
int s(int l,int r){
	int l1=l,r1=r;
	if (a[l]=='('&&a[r]==')'){l1++,r1--;}
	int t1=0,o;
	int t2=0,c;
	int u=0;
	int c2=-6,o2=-6;
	for (int i=l1;i<=r1;i++){
		if (a[i]=='('){u++;}
		if (a[i]==')'){u--;}
		if (c2==-6&&t2&&!u&&a[i]=='|'){c2=i;}
		if (o2==-6&&t1&&!u&&a[i]=='&'){o2=i;}
		if (!t1&&!u&&a[i]=='&'){t1+=1;o=i;}
		if (!t2&&!u&&a[i]=='|'){t2+=1;c=i;}	
	}
	if (t2){
		if (c2==-6){
			int d=s(l1,c-1);
			if (d==1){p+=1;return 1;}	
			return s(c+1,r1);
		}
		int d=s(l1,c2-1);
		if (d==1){p+=1;return 1;}
		return s(c2+1,r1);
	}
	else if (t1){
		if (o2==-6){
			int d=s(l1,o-1);
			if (d==0){q+=1;return 0;}
			return s(o+1,r1);
		}
		int d=s(l1,o2-1);
		if (d==0){q+=1;return 0;}
		return s(o2+1,r1);
	}
	else if (l1==r1){return a[l1]-48;}
}
2023/7/24 11:54
加载中...