POJ 3295--Tautology
2017-10-05 20:55
405 查看
2017-10-05
原题链接
题目大意:
以K、A、N、C、E定义了5种逻辑操作,p、q、r、s、t是5个逻辑变量。给出若干由这10个字符组成的字符串(长度不超过100字符),如:ApNp,判断这个字符串表示的逻辑函数是否为重言式(即无论其中逻辑变量取值为何,表达式的值都为真),是则输出”tautology”,不是则输出”not”。
样例输入:
样例输出:
参考题解
代码:
原题链接
题目大意:
以K、A、N、C、E定义了5种逻辑操作,p、q、r、s、t是5个逻辑变量。给出若干由这10个字符组成的字符串(长度不超过100字符),如:ApNp,判断这个字符串表示的逻辑函数是否为重言式(即无论其中逻辑变量取值为何,表达式的值都为真),是则输出”tautology”,不是则输出”not”。
样例输入:
ApNp ApNq 0
样例输出:
tautology not
参考题解
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <stack> #include <map> using namespace std; map<char,int> Map; //判断是否为重言式 bool jud(char *iput,int p, int q, int r, int s, int t) { stack<int> opNum; int op1,op2; //从后往前处理输入的字符串 for(int i = strlen(iput) - 1; i >= 0; i--) { //需要两个操作数的操作 if(iput[i] == 'K' || iput[i] == 'A' || iput[i] == 'C' || iput[i] == 'E') { op1 = opNum.top(); opNum.pop(); op2 = opNum.top(); opNum.pop(); switch(iput[i]) { case 'K': opNum.push(op1 && op2); break; case 'A': opNum.push(op1 || op2); break; case 'C': opNum.push((op1 && op2) || !op1); break; case 'E': opNum.push(op1 == op2); break; } } //只要一个操作数的“非”操作 else if(iput[i] == 'N') { op1 = opNum.top(); opNum.pop(); opNum.push(!op1); } //操作数 else opNum.push(Map[iput[i]]); } return opNum.top() == 1 ? true : false; } int main() { char iput[110]; while(scanf("%s",iput), iput[0] != '0') { bool flag = true; for(int p = 0; p <=1 && flag; p++) { Map['p'] = p; for(int q = 0; q <= 1 && flag; q++) { Map['q'] = q; for(int r = 0; r <= 1 && flag; r++) { Map['r'] = r; for(int s = 0; s <= 1 && flag; s++) { Map['s'] = s; for(int t = 0; t <= 1 && flag; t++) { Map['t'] = t; //是否为重言式,一旦出现为0即跳出 flag = jud(iput,p,q,r,s,t); } } } } } if(flag) printf("tautology\n"); else printf("not\n"); } return 0; }
相关文章推荐
- poj3295——Tautology(构造法)
- POJ 3295 Tautology(模拟)
- POJ 3295 Tautology
- poj3295--Tautology
- Tautology--POJ 3295
- poj 3295 Tautology
- poj-3295-Tautology
- poj 3295 Tautology
- POJ 3295 Tautology(递归、构造)
- POJ 3295 Tautology (构造法 栈)
- poj 3295--Tautology
- poj 3295 Tautology
- POJ-3295 Tautology 构造法
- poj 3295 Tautology
- POJ 3295 Tautology(构造法)
- poj 3295 Tautology
- poj 3295 Tautology
- POJ-3295-Tautology-2013-12-04 20:44:18
- poj 3295 Tautology
- Tautology(POJ--3295