0分求助
查看原帖
0分求助
226686
Herobrine6265楼主2021/10/12 19:59

Rt
代码如下
(最好能告诉我为啥以及咋改)

#include<bits/stdc++.h>
using namespace std;
int main()
{
	stack<bool>num;
	string ex;
	getline(cin,ex);
	int n,q;
	cin>>n;
	bool var[n+5],print[n+5];
	for(int i=1;i<=n;i++)
	{
		cin>>var[i];
	}
	cin>>q;
	for(int j=1;j<=q;j++)
	{
		int change;
		cin>>change;
		var[change]=!var[change];
		for(int i=1;i<=n;i++)
		{
			num.push(var[i]);
		}
		for(int i=0;i<ex.length();i++)
		{
			if(ex[i]==' '||ex[i]=='x')continue;
			if(ex[i]>='0'&&ex[i]<='9')num.push(var[ex[i]-'0']);
			else
			{
				bool v1,v2;
				v1=num.top();
				num.pop();
				v2=num.top();
				num.pop();
				switch(ex[i])
				{
					case '|':num.push(v1||v2);break;
					case '&':num.push(v1&&v2);break;
					case '!':num.push(v2);num.push(!v1);break;
				}
			}
		}
		print[j]=num.top();
		num.pop();
		var[change]=!var[change];
	}
	for(int i=1;i<=q;i++)cout<<print[i]<<endl;
	return 0;
}
2021/10/12 19:59
加载中...