2022 CSP-J T3 逻辑表达式

img


求解
错误代码:

#include
using namespace std;
int main(){
    string a;
    cin>>a;
    for(int i=0;iif(a[i]=='&'){
            if(a[i-2]=='('&&a[i+2]==')'){
                continue;
            }
            for(int j=i;j>=0;j--){
                if(a[j-1]=='|'||j==0||a[j]=='('){
                    a.insert(j,"(");
                    break;
                }
            }
            a.insert(i+3,")");
            i++;
        }
        if(a[i]=='|'){
            if(a[i-2]=='('&&a[i+2]==')'){
                continue;
            }
            for(int j=i;j>=0;j--){
                if(j==0||a[j]=='('){
                    a.insert(j,"(");
                    break;
                }
            }
            if(a[i+3]!='&'){
                a.insert(i+3,")");
            }
            for(int j=i;j<=a.size();j--){
                if(a[j+1]=='|'||j==a.size()||a[j]==')'){
                    a.insert(j,")");
                    break;
                }
            }
        }
    }
    stack q;
    int ans1=0,ans2=0;
    for(int i=0;iif(a[i]=='('){
            q.push(i);
            i++;
            continue;
        }
        if(a[i]==')'){
            int y=q.top();
            string w=a.substr(y+1,i-1);
            int t1=w[0]-'0',t2=w[2]-'0',t4;
            char t3=w[1];
            if(t3=='&'&&t1==0){
                ans1++;
            }
            if(t3=='|'&&t1==1){
                ans2++;
            }
            if(t3=='&'){
                t4=t1&t2;
            }
            else
                t4=t1|t2;
            a.erase(y,i+1);
            char u=t4+'0';
            string t="";
            t=t+u;
            a.insert(y,t);
            i=y;
        }
    }
    cout<' '<