⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2483boolean表达式计算.cpp

📁 自己的ac代码 在acm.zju.edu.cn 上的题目
💻 CPP
字号:
#include<iostream>
#include<string.h>
using namespace std;
#include<stack>
stack<char> ch;
stack<int>va;
char s[1000];
int main()
{
	int i,j,k,l;
	int T=0;
	int len;
	while(gets(s))
	{
		if(strcmp(s,"")==0)break;
		len=strlen(s);
		while(!ch.empty())ch.pop();
		while(!va.empty())va.pop();
		int va1,va2,ch1,ch2;
		for(i=len-1;i>=0;i--)
		{
			if(s[i]=='F')va.push(0);
			else if(s[i]=='V')va.push(1);
			else if(s[i]==')')ch.push(s[i]);
			else if(s[i]=='!')
			{
				va1=va.top();va.pop();
				va.push(1-va1);
			}
			else if(s[i]=='&')
			{
				ch.push(s[i]);
			}
			else if(s[i]=='|')
			{
				while(!ch.empty())
				{
					ch1=ch.top();
					if(ch1==')')break;
					ch.pop();
					va1=va.top();va.pop();
					va2=va.top();va.pop();
					if(ch1=='|')
					{
						va.push(va1 | va2);
					}
					else if(ch1=='&')
					{
						va.push(va1 & va2);
					}
				}
				ch.push(s[i]);
			}
			else if(s[i]=='(')
			{
				while(!ch.empty())
				{
					ch1=ch.top();ch.pop();
					if(ch1==')')break;					
					va1=va.top();va.pop();
					va2=va.top();va.pop();
					if(ch1=='|')
					{
						va.push(va1 | va2);
					}
					else if(ch1=='&')
					{
						va.push(va1 & va2);
					}
				}
			}
		}
		while(!ch.empty())
		{
			ch1=ch.top();ch.pop();
			va1=va.top();va.pop();
			va2=va.top();va.pop();
			if(ch1=='|')
			{
				va.push(va1 | va2);
			}
			else if(ch1=='&')
			{
				va.push(va1 & va2);
			}
		}
		va1=va.top();
		T++;
		if(va1==1)
			printf("Expression %d: V\n",T);
		else
			printf("Expression %d: F\n",T);
	}
	return 0;
}


	





				


		


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -