两个样例都通过了还爆零了,求大神指点(数据错了?)
查看原帖
两个样例都通过了还爆零了,求大神指点(数据错了?)
328879
Tuftstar楼主2020/11/8 17:54

(附代码【未改变文件输入输出】)

#include <fstream>
#include <string>
#include <stack>

using namespace std;

ifstream cin("expr.in");
ofstream cout("expr.out");

stack<bool> num;

int main(int argc, char **argv)
{
    string shizi;
    getline(cin, shizi);
    int nums;
    cin >> nums;
    bool x[nums];
    for(int i = 0; i < nums; i++)
    {
        int t;
        cin >> t;
        x[i] = bool(t);
    }
    int chgs, chgp;
    cin >> chgs;
    for(int wit = 0; wit < chgs; wit++)
    {
        cin >> chgp;
        x[chgp-1] = !x[chgp-1]; //begp
        for(int i = 0; i < shizi.size(); i++)
        {
            if(shizi[i] >= '0' && shizi[i] <= '9')
            {
                num.push(x[shizi[i] - '0' - 1]);
            }
            if(shizi[i] == '|')
            {
                bool a, b;
                a = num.top();
                num.pop();
                b = num.top();
                num.pop();
                num.push(a || b);
            }
            if(shizi[i] == '&')
            {
                bool a, b;
                a = num.top();
                num.pop();
                b = num.top();
                num.pop();
                num.push(a && b);
            }
            if(shizi[i] == '!')
            {
                bool a;
                a = num.top();
                num.pop();
                num.push(!a);
            }
        }
        cout << int(num.top()) << endl;
        num.pop();
        x[chgp-1] = !x[chgp-1]; //endp
    }
    return 0;
}
2020/11/8 17:54
加载中...