POJ-2106 Boolean Expressions-!||&计算
来源:互联网 发布:什么是淘宝推广 编辑:程序博客网 时间:2024/04/29 00:50
Boolean Expressions
Time Limit: 1000MS Memory Limit: 30000KTotal Submissions: 3679 Accepted: 1107
Description
The objective of the program you are going to produce is to evaluate boolean expressions as the one shown next:
Expression: ( V | V ) & F & ( F | V )
where V is for True, and F is for False. The expressions may include the following operators: ! for not , & for and, | for or , the use of parenthesis for operations grouping is also allowed.
To perform the evaluation of an expression, it will be considered the priority of the operators, the not having the highest, and the or the lowest. The program must yield V or F , as the result for each expression in the input file.
where V is for True, and F is for False. The expressions may include the following operators: ! for not , & for and, | for or , the use of parenthesis for operations grouping is also allowed.
To perform the evaluation of an expression, it will be considered the priority of the operators, the not having the highest, and the or the lowest. The program must yield V or F , as the result for each expression in the input file.
Input
The expressions are of a variable length, although will never exceed 100 symbols. Symbols may be separated by any number of spaces or no spaces at all, therefore, the total length of an expression, as a number of characters, is unknown.
The number of expressions in the input file is variable and will never be greater than 20. Each expression is presented in a new line, as shown below.
The number of expressions in the input file is variable and will never be greater than 20. Each expression is presented in a new line, as shown below.
Output
For each test expression, print "Expression " followed by its sequence number, ": ", and the resulting value of the corresponding test expression. Separate the output for consecutive test expressions with a new line.
Use the same format as that shown in the sample output shown below.
Use the same format as that shown in the sample output shown below.
Sample Input
( V | V ) & F & ( F| V)!V | V & V & !F & (F | V ) & (!F | F | !V & V)(F&F|V|!V&!F&!(F|F&V))
Sample Output
Expression 1: FExpression 2: VExpression 3: V
Source
México and Central America 2004
#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int maxn=100+10;int val[maxn],vtop;int op[maxn],otop;void insert(int t){ while(otop&&op[otop-1]==3) { t=!t; --otop; } val[vtop++]=t;}void calc(){ int b=val[--vtop]; int a=val[--vtop]; int o=op[--otop]; int c=(a&b); if(o==1)c=(a|b); insert(c);}int main(){ int loop=1; char c; while((c=getchar())!=EOF) { vtop=otop=0; do { if(c=='(') { op[otop++]=0; } else if(c==')') { while(otop&&op[otop-1]!=0) calc(); --otop; insert(val[--vtop]); } else if(c=='!') { op[otop++]=3; } else if(c=='&') { while(otop&&op[otop-1]>=2) calc(); op[otop++]=2; } else if(c=='|') { while(otop&&op[otop-1]>=1) calc(); op[otop++]=1; } else if(c=='V'||c=='F') { insert(c=='V'?1:0); } } while((c=getchar())!='\n'&&c!=EOF); while(otop)calc(); printf("Expression %d: %c\n",loop++,(val[0]?'V':'F')); } return 0;}
0 0
- POJ-2106 Boolean Expressions-!||&计算
- poj 2106 Boolean Expressions
- POJ 2106 Boolean Expressions
- POJ 2106 Boolean Expressions
- poj 2106 Boolean Expressions
- POJ 2106:Boolean Expressions 计算布尔表达式 - 堆栈
- POJ 2106 Boolean Expressions 笔记
- poj 2106 Boolean Expressions 课本代码
- POJ 2106 Boolean Expressions(模拟+LL1)
- POJ---2106-Boolean Expressions(stack)
- POJ 2106 Boolean Expressions(递归算法)
- poj 2106 Boolean Expressions(模拟)
- poj 2106.Boolean Expressions
- Boolean Expressions POJ
- pku 2106 Boolean Expressions
- POJ 2106 Boolean Expressions (栈,位运算)
- poj 2106 Boolean Expressions(特殊的表达式求值)
- POJ 2106-Boolean Expressions,双栈运用类似表达式求值!
- 支持连接池和结果集缓存的MySQL数据库JDBC通用框架的轻量级封装(二)——向上封装
- 简单估值
- 父类与子类之间 指针引用等互调
- 欢迎使用CSDN-markdown编辑器
- POJ1019--5 2 1 36 9 80 69 85
- POJ-2106 Boolean Expressions-!||&计算
- zoj 1292 Integer Inquiry【大数】
- POJ 1850 Code(组合数学)
- 异或以及其相关应用
- 浅谈从项目型公司到产品型公司的转型
- 备忘录——对象行为模式
- win7共享文件步骤以及权限不足问题解决方法
- Ubuntu Win8双系统 Grub引导Win8
- 视图跳转按钮